diff --git a/minode/sql.py b/minode/sql.py index ed47538..7ca22ac 100644 --- a/minode/sql.py +++ b/minode/sql.py @@ -39,18 +39,17 @@ class Inventory(): cur.execute('VACUUM') cur.execute("INSERT INTO status VALUES ('lastvacuumtime', ?)", (now,)) self._db.commit() + self._db.row_factory = self.__object @staticmethod def __object(cursor, row): + if len(cursor.description) != 8: + return row vector, expires, obj_type, version, stream, tag, data, offset = row return structure.Object( expires, obj_type, version, stream, data, offset, tag=tag, vector=vector) - def __objects(self, cur): - cur.row_factory = self.__object - return cur - def cleanup(self): with shared.objects_lock: self._db.execute( @@ -74,7 +73,7 @@ class Inventory(): cur = self._db.execute( 'SELECT * FROM objects WHERE ' # nosec B608 + ' AND '.join(clauses), params) - return self.__objects(cur) + return cur def vectors_to_send(self, stream=None): cur = self._db.execute( @@ -95,8 +94,7 @@ class Inventory(): return (v for v, in cur) def values(self): - cur = self._db.execute('SELECT * FROM objects') - return self.__objects(cur) + return self._db.execute('SELECT * FROM objects') def popitem(self): if not self.rowid: @@ -114,10 +112,8 @@ class Inventory(): return cur.fetchone() def __getitem__(self, vector): - cur = self._db.execute( - 'SELECT * FROM objects WHERE vector = ?', (vector,)) - cur.row_factory = self.__object - item = cur.fetchone() + item = self._db.execute( + 'SELECT * FROM objects WHERE vector = ?', (vector,)).fetchone() if item is None: raise KeyError(vector) return item