Пара вещей. Во-первых, SQLite не позволяет напрямую хранить структуры данных Python. Во-вторых, я предполагаю, что вы хотите иметь возможность запрашивать значение по ключу кортежа по требованию, поэтому вы не хотите выбирать и открывать, а затем искать ключи в диктовке.
Проблема в том, что вы не можете делать запросы с кортежами и не можете разбить записи кортежей на их собственные столбцы, потому что они имеют разные размеры. Если вы должны использовать SQLite, вам в значительной степени придется объединять символы юникода в кортеже, возможно, с разделителем, который не является одним из символов в значениях кортежа. Используйте его в качестве ключа и сохраните в столбце SQLite в качестве столбца первичного ключа.
def tuple2key(t, delimiter=u':'):
return delimiter.join(t)
import sqlite3
conn = sqlite3.connect('/path/to/your/db')
cur = conn.cursor()
cur.execute('''create table tab (k text primary key, value integer)''')
# store the dict into a table
for k, v in my_dict.iteritems():
cur.execute('''insert into tab values (?, ?)''', (tuple2key(k), v))
cur.commit()
# query the values
v = cur.execute(''' select value from tab where key = ? ''', tuple2key((u'a',u'b'))).fetchone()