summaryrefslogtreecommitdiff
path: root/artima/python/easydb.py
diff options
context:
space:
mode:
Diffstat (limited to 'artima/python/easydb.py')
-rw-r--r--artima/python/easydb.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/artima/python/easydb.py b/artima/python/easydb.py
new file mode 100644
index 0000000..cd9f069
--- /dev/null
+++ b/artima/python/easydb.py
@@ -0,0 +1,24 @@
+# easydb.py
+from operator import itemgetter
+from collections import namedtuple # for Python >= 2.6
+
+def get_table_from_db(cursor, query_templ, query_args=(), ntuple=None):
+ if query_args:
+ cursor.execute(query_templ, query_args)
+ else:
+ cursor.execute(query_templ)
+ rows = cursor.fetchall()
+ fields = map(itemgetter(0), cursor.description)
+ Ntuple = ntuple or namedtuple('DBTuple', fields)
+ yield Ntuple(*fields)
+ for row in rows:
+ yield Ntuple(*row)
+
+if __name__ == '__main__': # test
+ from sqlite3 import dbapi2
+ conn = dbapi2.connect(':memory:')
+ conn.execute('create table test(id integer, descr varchar)')
+ conn.execute("insert into test values (1,'one')")
+ conn.execute("insert into test values (2,'two')")
+ for rec in get_table_from_db(conn.cursor(), 'select * from test'):
+ print rec