summaryrefslogtreecommitdiff
path: root/artima/python/easydb.py
blob: cd9f069a17ebb0d9899915e6f2c3016b88a132c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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