["python","sql","sqlite","dictionary","dataformat"]
How can I get dict from sqlite query?

db = sqlite.connect("test.sqlite") res = db.execute("select * from table") With iteration I get lists coresponding to the rows. for row in res: print row I can get name of the columns col_name_list = [tuple[0] for tuple in res.description] But is there some function or setting to get dictionaries instead of list? {'col1': 'value', 'col2': 'value'} or I have to do myself?
You could use row_factory, as in the example in the docs: import sqlite3 def dict_factory(cursor, row): d = {} for idx, col in enumerate(cursor.description): d[col[0]] = row[idx] return d con = sqlite3.connect(":memory:") con.row_factory = dict_factory cur = con.cursor() cur.execute("select 1 as a") print cur.fetchone()["a"] or follow the advice that's given right after this example in the docs: If returning a tuple doesn’t suffice and you want name-based access to columns, you should consider setting row_factory to the highly-optimized sqlite3.Row type. Row provides both index-based and case-insensitive name-based access to columns with almost no memory overhead. It will probably be better than your own custom dictionary-based approach or even a db_row based solution. Here is the code for this second solution: con = sqlite3.connect(…) con.row_factory = sqlite3.Row # add this row cursor = con.cursor()