One useful feature of the sqlite3 module is the builtin sqlite3.Row class designed to be used as a row factory.
Rows wrapped with this class can be accessed both by index (like tuples) and case-insensitively by name:
import sqlite3 con = sqlite3.connect("mydb") con.row_factory = sqlite3.Row cur = con.cursor() cur.execute("select name_last, age from people") for row in cur: assert row[0] == row["name_last"] assert row["name_last"] == row["nAmE_lAsT"] assert row[1] == row["age"] assert row[1] == row["AgE"]
See About this document... for information on suggesting changes.