【发布时间】:2019-01-27 20:04:14
【问题描述】:
我正在尝试使用以下代码在 python 中使用 for 循环将多行插入到表中:
ID = 0
values = ['a', 'b', 'c']
for x in values:
database.execute("INSERT INTO table (ID, value) VALUES (:ID, :value)",
ID = ID, value = x)
ID += 1
我预期会发生的是,这段代码会在我的表中插入三行。唯一的问题是它只执行一次查询。所以我只会得到行“0,'a'”。
没有弹出任何错误消息,只是没有用其他两个值更新表。然而奇怪的是,我可以通过使用多个查询来规避这个问题,如下所示:
ID = 0
values = ['a', 'b', 'c']
for x in values:
database.execute("INSERT INTO table (ID) VALUES (:ID)", ID = ID)
database.execute("INSERT INTO table (value) VALUES (:value)", value = x)
ID += 1
虽然这会更新我的代码,但当我将列添加到表的更下方时,此方法会变得更加乏味。有谁知道为什么第一个 sn-p 代码不起作用而第二个代码起作用?
【问题讨论】:
-
您并没有真正将“值”添加到与“ID”相同的行中,你知道的。
-
我不是 100% 确定,但是您是否从 Python 提交了查询?我相信默认情况下 SQLite 是自动提交的,但也许你可以检查一下。