Skip to content

Instantly share code, notes, and snippets.

@seungjin
Last active August 29, 2015 14:08
Show Gist options
  • Save seungjin/2c5b18f76c16251e8ed5 to your computer and use it in GitHub Desktop.
Save seungjin/2c5b18f76c16251e8ed5 to your computer and use it in GitHub Desktop.
#!/bin/env python27
# -- coding: utf-8 --
import dataset
from sqlalchemy.exc import OperationalError
import time
class Local_storage:
def __init__(self):
self.db = dataset.connect('sqlite:///local_storage.sqlite')
self.table = self.db['lstable']
self.table.create_index(['name'])
def get(self, name=None):
return [ i['value'] for i in self.table.find(name=name)]
def set(self, name=None, value=None):
return self.table.insert(dict(name=name,value=value))
def unset(self,name=None):
return self.table.delete(name=name)
def del_val(self,value=None):
return self.table.delete(value=value)
def dump(self,type=None):
if type == "json":
pass
else:
return [i for i in self.table.all()]
def is_it_new(self, name=None, value=None):
return_value = None
db = self.db
table = self.table
try :
if table.find_one(name=name) != None:
if table.find_one(name=name)['value'] == value:
return_value = False
else :
return_value = True
else :
table.insert(dict(time=time.time(),name=name,value=value))
return_value = True
table.update(dict(time=time.time(),name=name,value=value), ['name'])
#if table.update(dict(time=time.time(),name=name,value=value), ['name']) == False:
# table.insert(dict(time=time.time(),name=name,value=value))
except OperationalError as e:
if e.message == "(OperationalError) no such column: value": #db or table not exist.
table.insert(dict(time=time.time(),name=name,value=value))
else :
print e.message
except Exception as e:
print e
return return_value
def reset_table(self):
self.table.drop()
if __name__ == "__main__":
ls = Local_storage()
ls.set("test-key-name","test-key-value")
#print ls.get("test-key-name")
#ls.unset("test-key-name")
#print ls.is_it_new("test-key","test-val")
print ls.dump("json")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment