使用execu插入多行

2024-09-30 14:16:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我谨执行以下声明:

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

但是我没有像上面那样硬编码这些值,而是将它们放在一个变量中:

^{pr2}$

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

更新

我希望能够保证,如果数据被插入到表中,即使出现程序崩溃,也会插入所有数据,或者不插入任何数据。如果在运行executemany时出现程序崩溃,是否存在只添加部分行的风险?在

例如,这是否会导致只添加一些行:

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

Tags: 数据name程序声明executescoreinsertvalues
2条回答

要将事务放入事务中,您应该使用游标和try块,如果发生异常,该块将回滚。在

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)

相关问题 更多 >

    热门问题