diff options
Diffstat (limited to 'kronos/storage.py')
-rw-r--r-- | kronos/storage.py | 31 |
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() |