如何在 sqlite 中从此循环插入数据
How can I insert data from this loop in sqlite
我正在尝试从与此类似的循环中插入数据。
import sqlite3
conn = sqlite3.connect('database.db')
c = conn.cursor()
words = ["apple", "banana", "cherry"]
for word in words:
c.execute("insert into Words (word), values (?)",(word))
print(word)
conn.commit
c.close()
conn.close()
预期结果与此类似:
我收到一个错误。但是我不确定如何正确地正确格式化这段代码。
错误:
Traceback (most recent call last):
File "file.py", line 7, in <module>
c.execute("insert into Words (word), values (?)",(word))
sqlite3.OperationalError: near ",": syntax error
我猜您遇到了一个错误,因为您不能将单个项目放在括号中以使其成为元组 - 所以 (word)
不是正确的选择。它应该是其中之一(以您更易读的为准):
c.execute("insert into Words (word) values (?)",(word,))
注意在 word
之后插入的逗号使其成为一个元组。或者:
c.execute("insert into Words (word) values (?)",[word])
这将使 word
成为 list
中的唯一元素
您可以在控制台中亲眼看到 ('hello')
之类的操作不等于 ('hello',)
。第一个仍然是一个字符串,第二个是一个元组(这是您的命令中需要的)。
编辑:此外,您在该命令中有一个不应该存在的逗号
错误列表:
commit() 不提交,因为它是一个方法
"insert into Words (word) values (?)",(word,) 不是 "insert into Words (word), values (?)",(word)
正确的代码是:
import sqlite3
conn = sqlite3.connect('database.db')
c = conn.cursor()
words = ["apple", "banana", "cherry"]
for word in words:
c.execute("insert into Words (word) values (?)",(word,))
print(word)
conn.commit()
conn.close()
别担心,编码愉快
最简单的方法是使用 f-string:
c.execute(f"INSERT INTO Words (word), values ({word})")
这更容易阅读 :) 但需要 python 3.6+
import sqlite3
with sqlite3.connect('database.db') as conn:
c = conn.cursor()
words = ["apple", "banana", "cherry"]
for word in words:
c.execute(f"INSERT INTO Words (word), values ({word})")
print(word)
conn.commit()
我正在尝试从与此类似的循环中插入数据。
import sqlite3
conn = sqlite3.connect('database.db')
c = conn.cursor()
words = ["apple", "banana", "cherry"]
for word in words:
c.execute("insert into Words (word), values (?)",(word))
print(word)
conn.commit
c.close()
conn.close()
预期结果与此类似:
我收到一个错误。但是我不确定如何正确地正确格式化这段代码。
错误:
Traceback (most recent call last):
File "file.py", line 7, in <module>
c.execute("insert into Words (word), values (?)",(word))
sqlite3.OperationalError: near ",": syntax error
我猜您遇到了一个错误,因为您不能将单个项目放在括号中以使其成为元组 - 所以 (word)
不是正确的选择。它应该是其中之一(以您更易读的为准):
c.execute("insert into Words (word) values (?)",(word,))
注意在 word
之后插入的逗号使其成为一个元组。或者:
c.execute("insert into Words (word) values (?)",[word])
这将使 word
成为 list
您可以在控制台中亲眼看到 ('hello')
之类的操作不等于 ('hello',)
。第一个仍然是一个字符串,第二个是一个元组(这是您的命令中需要的)。
编辑:此外,您在该命令中有一个不应该存在的逗号
错误列表: commit() 不提交,因为它是一个方法 "insert into Words (word) values (?)",(word,) 不是 "insert into Words (word), values (?)",(word)
正确的代码是:
import sqlite3
conn = sqlite3.connect('database.db')
c = conn.cursor()
words = ["apple", "banana", "cherry"]
for word in words:
c.execute("insert into Words (word) values (?)",(word,))
print(word)
conn.commit()
conn.close()
别担心,编码愉快
最简单的方法是使用 f-string:
c.execute(f"INSERT INTO Words (word), values ({word})")
这更容易阅读 :) 但需要 python 3.6+
import sqlite3
with sqlite3.connect('database.db') as conn:
c = conn.cursor()
words = ["apple", "banana", "cherry"]
for word in words:
c.execute(f"INSERT INTO Words (word), values ({word})")
print(word)
conn.commit()