15

次の列を持つテーブルを持つ sqlite データベースがあります。

id(int) , name(text) , dob(text)

次の辞書を挿入したい:

{"id":"100","name":"xyz","dob":"12/12/12"}

辞書のキーは列名です。どうすれば達成できますか?

4

5 に答える 5

10

ここのドキュメントを見ると、単一の行を追加できます。

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)
于 2012-06-06T11:26:53.077 に答える
9

パラメータの安全性を維持する方法を次に示します。(テーブル名部門で研磨が必要かもしれません)

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)
于 2015-08-10T14:09:16.453 に答える