如何使用python将值列表插入sqlite3中的列?

时间:2016-08-11 19:21:27

标签: python sqlite

我无法让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)

2 个答案:

答案 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()