【发布时间】:2016-06-07 01:20:25
【问题描述】:
我研究了类似的链接,但仍然无法弄清楚。大多数其他链接都在尝试插入多行或多列,但我需要一列中的元组列表。
word_in_python = cat
listOfTuples = [('word1', 12), ('word2', 14), ('word3', 4), ('word5', 23)]
这是我的代码:
conn = sqlite3.connect('mydb.db')
c = conn.cursor()
c.execute("INSERT OR IGNORE INTO saved_words (word, data) VALUES (?, ?)", (word_in_python, [listOfTuples]))
conn.commit()
conn.close()
我需要 INSERT OR IGNORE 因为 word 列是唯一列,因此不应将重复的单词输入到数据库中。
我试过改成:
c.execute("INSERT OR IGNORE INTO saved_words (word, data) VALUES (?, ?)", (word_in_python, (listOfTuples, )))
c.executemany("INSERT OR IGNORE INTO saved_words (word, data) VALUES (?, ?)", (word_in_python, [listOfTuples]))
for each in listOfTuples:
c.executemany("INSERT OR IGNORE INTO saved_words (word, data) VALUES (?, ?)", (word_in_python, (each[0], each[1]) ))
这些都不起作用。
我通常遇到的错误是:
Incorrect number of bindings supplied. The current statement uses 2, and there are 5 supplied.
我也对这个错误感到困惑。我知道我的执行行中的 (?, ?) 意味着我正在尝试输入 2 个绑定。我的元组列表中有 10 个元组,所以我不确定提供的 5 个绑定来自哪里。
此外,我的 saved_words 表的数据列类型为 BLOB。我认为这最适合插入列表。
编辑
我想要的是 word_in_python (cat) 在一列和下一列 listOfTuples 中,这都在一行中。
【问题讨论】:
-
什么是
word_in_python? -
@alecxe 这是一个单独的字符串,我正在输入到另一列。在调试时,我测试了只将 word_in_python 插入数据库,它工作正常。我相信我的错误在于插入 listOfTuples。
-
列表不是 blob。列表存储在数据库中时应该是什么样子?
-
@CL。列表的列应在一条记录和一列中包含整个列表。
-
SQLite 没有列表data type。