次の列を持つテーブルを持つ sqlite データベースがあります。
id(int) , name(text) , dob(text)
次の辞書を挿入したい:
{"id":"100","name":"xyz","dob":"12/12/12"}
辞書のキーは列名です。どうすれば達成できますか?
次の列を持つテーブルを持つ sqlite データベースがあります。
id(int) , name(text) , dob(text)
次の辞書を挿入したい:
{"id":"100","name":"xyz","dob":"12/12/12"}
辞書のキーは列名です。どうすれば達成できますか?
ここのドキュメントを見ると、単一の行を追加できます。
c.execute("INSERT INTO stocks VALUES (?,?,?)", [dict["id"], dict["name"], dict["dob"]])
または、リストを使用して一度に複数の行を追加できます。
# Larger example that inserts many records at a time
purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),
('2006-04-06', 'SELL', 'IBM', 500, 53.00),
]
c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)
パラメータの安全性を維持する方法を次に示します。(テーブル名部門で研磨が必要かもしれません)
def post_row(conn, tablename, rec):
keys = ','.join(rec.keys())
question_marks = ','.join(list('?'*len(rec)))
values = tuple(rec.values())
conn.execute('INSERT INTO '+tablename+' ('+keys+') VALUES ('+question_marks+')', values)
row = {"id":"100","name":"xyz","dob":"12/12/12"}
post_row(my_db, 'my_table', row)