summaryrefslogtreecommitdiff
path: root/kronos/storage.py
diff options
context:
space:
mode:
Diffstat (limited to 'kronos/storage.py')
-rw-r--r--kronos/storage.py31
1 files changed, 19 insertions, 12 deletions
diff --git a/kronos/storage.py b/kronos/storage.py
index 4add988..2cb37a7 100644
--- a/kronos/storage.py
+++ b/kronos/storage.py
@@ -41,16 +41,20 @@ class BaseStorageBackEnd(object):
41 back-end. 41 back-end.
42 """ 42 """
43 name = model_obj.__name__ 43 name = model_obj.__name__
44 result = self.select(name, **kwargs)
45 44
46 instance = model_obj() 45 output = []
47 for key, value in result.items(): 46 for item in self.select(name, **kwargs):
48 if key != 'id': 47 instance = model_obj()
49 setattr(instance, key, value) 48
50 else: 49 for key, value in item.items():
51 instance.__db_id__ = value 50 if key != 'id':
51 setattr(instance, key, value)
52 else:
53 instance.__db_id__ = value
52 54
53 return instance 55 output.append(instance)
56
57 return output
54 58
55 def save(self, model_obj): 59 def save(self, model_obj):
56 """ 60 """
@@ -121,11 +125,14 @@ class SQLiteBackEnd(BaseStorageBackEnd):
121 self.connection = self.engine.connect(database) 125 self.connection = self.engine.connect(database)
122 126
123 def select(self, table, **kwargs): 127 def select(self, table, **kwargs):
124 sql = "SELECT * FROM {0} WHERE ".format(table) 128 sql = "SELECT * FROM {0}".format(table)
125 for key in kwargs.keys(): 129
126 sql += "{0}=? ".format(key) 130 if kwargs:
131 sql += " WHERE "
132 for key in kwargs.keys():
133 sql += "{0}=? ".format(key)
127 134
128 return self._get_normalized_results(sql, **kwargs)[0] 135 return self._get_normalized_results(sql, **kwargs)
129 136
130 def _get_normalized_results(self, sql, **kwargs): 137 def _get_normalized_results(self, sql, **kwargs):
131 self._check_connection() 138 self._check_connection()