gpt4 book ai didi

Python - SQLite3 中的操作错误

转载 作者:行者123 更新时间:2023-12-01 04:54:59 24 4
gpt4 key购买 nike

当我插入数据库时​​,出现此错误:

sqlite3.OperationalError: near "word": syntax error

代码:

con = sqlite3.connect('films.db')
cur = con.cursor()
cur.execute('CREATE TABLE films (id INTEGER PRIMARY KEY, name VARCHAR(100), ' +
'img BLOB, imbd VARCHAR(30), country_year VARCHAR(50))')
con.commit()

for i in range(97):
cur.execute('INSERT INTO films (name, img, imbd) VALUES(' + names[i].text_content() + ', ' + str(urllib.request.urlopen(img[i].get('src')).read()) + ', ' + imbd[i].text_content() + ' )')
con.commit()
print(cur.lastrowid)

这个字符串“word”来自“name”。

如何修复它?

最佳答案

您犯的主要错误是您没有将文字括在引号中

con = sqlite3.connect('films.db')
cur = con.cursor()
cur.execute('CREATE TABLE films (id INTEGER PRIMARY KEY, name VARCHAR(100), ' +
'img BLOB, imbd VARCHAR(30), country_year VARCHAR(50))')
con.commit()

for i in range(97):
cur.execute('INSERT INTO films (name, img, imbd) VALUES("' + names[i].text_content() + '", "' + str(urllib.request.urlopen(img[i].get('src')).read()) + '", "' + imbd[i].text_content() + '" )')
con.commit()
print(cur.lastrowid)

但如果你这样做,你就犯了地球上最大的错误。插入语句应该是

cur.execute('INSERT INTO films (name, img, imbd) VALUES(?,?,?)', (names[i].text_content(), str(urllib.request.urlopen(img[i].get('src')).read()), imbd[i].text_content()))

否则你很容易受到 SQL Syringing 的影响。阅读 this有关为什么必须使用 ? 而不是串联的说明。

最后看看这张图片并尝试理解会出现什么问题。 enter image description here

关于Python - SQLite3 中的操作错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27641540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com