diff options
author | Rob Austein <sra@hactrn.net> | 2007-09-08 23:54:49 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2007-09-08 23:54:49 +0000 |
commit | 470a5d8bc23a51e38f3a15dd7713b5d2ff57d32e (patch) | |
tree | 66a661d6d12f5b44f2843a0915f58cb6b5cb7a50 /scripts/rpki/sql.py | |
parent | 4d586052503ffc5d047a6fed07ac03cf92ae11ab (diff) |
Checkpoint
svn path=/scripts/rpki/sql.py; revision=934
Diffstat (limited to 'scripts/rpki/sql.py')
-rw-r--r-- | scripts/rpki/sql.py | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/scripts/rpki/sql.py b/scripts/rpki/sql.py index 9215abef..14cd7683 100644 --- a/scripts/rpki/sql.py +++ b/scripts/rpki/sql.py @@ -37,7 +37,7 @@ class sql_persistant(object): sql_attributes = None # Must be overriden by derived type @classmethod - def sql_fetch(cls, db, **kwargs): + def sql_fetch(cls, db, cur=None, arg_dict=None, **kwargs): """Fetch rows from SQL based on a canned query and a set of keyword arguments, and instantiate them as objects, returning a list of the instantiated objects. @@ -47,10 +47,14 @@ class sql_persistant(object): performed it. """ - cur = db.cursor() - cur.execute(self.sql_select_cmd % kwargs) + if cur is None: + cur = db.cursor() + if arg_dict is None: + arg_dict = kwargs + else: + assert len(kwargs) == 0 + cur.execute(self.sql_select_cmd % arg_dict) rows = cur.fetchall() - cur.close() objs = [] for row in rows: obj = cls() @@ -58,8 +62,9 @@ class sql_persistant(object): obj.sql_objectify(*row) objs.append(obj) if isinstance(obj, sql_persistant): + obj_dict = obj.sql_makedict() for kid in obj.sql_children: - setattr(obj, obj.sql_children[kid], kid.sql_fetch(db)) + setattr(obj, obj.sql_children[kid], kid.sql_fetch(db, cur, obj_dict)) return objs def sql_objectify(self): |