Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-将元组列表插入SQLite中的一列_Python_Sqlite - Fatal编程技术网

Python-将元组列表插入SQLite中的一列

Python-将元组列表插入SQLite中的一列,python,sqlite,Python,Sqlite,我已经研究过类似的链接,但仍然无法找到答案。大多数其他链接都试图插入到多个行或列中,但我需要一列中的元组列表 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

我已经研究过类似的链接,但仍然无法找到答案。大多数其他链接都试图插入到多个行或列中,但我需要一列中的元组列表

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()
我需要插入或忽略,因为单词列是唯一的列,所以不应在db中输入重复的单词

我试着换成:

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。我认为这将是最好的插入列表

编辑


我想要的是python中的word_(cat)在一列中,在下一列中列出元组,这都在一行中。

不确定python中的word_是什么,但将元组列表传递给
ExecuteMay
的正确方法是:

c.executemany("INSERT OR IGNORE INTO saved_words (word, data) VALUES (?, ?)", listOfTuples))

在这种情况下,数据库驱动程序将使用元组项作为查询参数为列表中的每个元组执行一条语句-
word1
用于
word
12
用于
data
,然后
word2
用于
word
14
用于数据等。

不确定python中的
word u是什么,但是将元组列表传递给
executemany
的正确方法是:

c.executemany("INSERT OR IGNORE INTO saved_words (word, data) VALUES (?, ?)", listOfTuples))

在这种情况下,数据库驱动程序将使用元组项作为查询参数,为列表中的每个元组执行一条语句-
word1
用于
word
12
用于
data
,然后
word2
用于
word
14
用于数据等。

python中的
word\u是什么?@alecxe它是一个单独的字符串,我正在另一列中输入。在调试过程中,我测试了将python中的单词插入db,效果很好。我相信我的错误是插入了listOfTuples。列表不是blob。当列表存储在DB中时,它到底应该是什么样子?@CL。列表的列应该在一个记录和一个列中包含整个列表。SQLite没有列表。python中的
word\u是什么?@alecxe它是一个单独的字符串,我正在输入到另一列中。在调试过程中,我测试了将python中的单词插入db,效果很好。我相信我的错误是插入了listOfTuples。列表不是blob。当列表存储在DB中时,它到底应该是什么样子?@CL。列表的列应该在一个记录和一个列中包含整个列表。SQLite没有列表。我已经编辑到post来解释python中的单词“u”。它实际上是一个单独的字符串,而不是元组中的第一个单词。它实际上是一个单独的字符串,而不是元组中的第一个单词。