使用Execute插入多行



我希望执行以下语句:

c.execute('INSERT INTO artists (name, score) VALUES("Buddy Rich", 10), ("Candido", 9), ("Charlie Byrd", 8);')

但是,我将它们放在变量中,而不是用上述值进行硬编码:

scores = (("Buddy Rich", 10), ("Candido", 9), ("Charlie Byrd", 8))

如何将scoresexecute()一起使用,其中scores可以包含任何数量的值?

update

我希望能够保证,如果将数据插入表中,即使存在程序崩溃,所有数据(或无数据(也不会插入。如果运行executemany时有程序崩溃,是否存在只添加某些行的风险?

例如,这只能导致一些添加的行:

try:
   c.executemany('INSERT INTO artists (name, score) VALUES (?, ?)', scores)
except:
   c.commit() 

要将物品放入交易中,您应该使用光标,如果提出异常,则可以将其倒退。

import sqlite3   
scores = (("Buddy Rich", 10), ("Candido", 9), ("Charlie Byrd", 8))
con = sqlite3.connect(':memory:')
try:
    cur = c.cursor()
    cur.execute('create table artists (name text primary key, score int)')
    cur.executemany('INSERT INTO artists (name, score) VALUES (?, ?)', scores)
    con.commit()
except:
    con.rollback()

您可以使用executemany

scores = (("Buddy Rich", 10), ("Candido", 9), ("Charlie Byrd", 8))
c.executemany('INSERT INTO artists (name, score) VALUES (?, ?)', scores)

最新更新