我无法让executemany
工作。我没有收到任何错误。但是没有插入任何值。以下是一个小例子:表格价格已经有一些列和3行。我添加了一个新列t
,并将vals
中的值插入t
。
vals = [(1,), (2,), (3,)]
cursor.execute("ALTER TABLE prices ADD COLUMN t REAL")
cursor.executemany("INSERT INTO TABLE prices(t) VALUES(?)", vals)
data = cursor.execute("SELECT id, t FROM prices")
for i in data:
print i
我得到了
(1, None)
(2, None)
(3, None)
答案 0 :(得分:1)
看起来您似乎没有在列中插入值,假设您的表有2列(id,t) 检查列表顶部的列表
vals = [(1,), (2,), (3,)]
也许这就是问题所在。你能详细说明一下吗?
答案 1 :(得分:0)
您实际上已成功将值插入表中。问题是它们是底部的新行。 如果你进行了一次获取,你将拥有 (col1,col2,...,none) 。 。 。 (无,无,......,1)
这是因为INSERT INTO命令添加了行。
罗伯的例子之所以奏效,是因为他表中没有现有的专栏。
您需要使用WHERE子句进行更新: 虽然这很慢,但我想加快速度
add_col_str = "ALTER TABLE orig ADD COLUMN {} INT".format(col_name)
db.execute(add_col_str)
for i in range(len(df)):
add_data_str = "UPDATE orig SET {} =(?) WHERE orig_id=(?)".format(col_name)
value = int(df.values[i])
idx = df.index[i]
db.execute(add_data_str, (value, idx))
# commit
db.commit()