python中的sqlite报告了语法,但在sqlite控制台中没有问题
我想将一些数据插入数据库,并使用下面的代码,但是当我运行它时,Python解释器重新装置为sqlite3.operationalerror:near“ s”:Syntax Error
。然后,我复制了由Python Link打印的SQL 插入Movie250(info_link,pic_link,central_name,其他_name,score,评分,速率,简介,简介,info)值('https://movie.douban.com/subject/subject/subject/1292052/'' ,'https://img2.doubanio.com/view/photo/s_ratio_poster/public/pbullic/p480747492.jpg',''''','shawshank rexemption',9.7,2615494 :弗兰克·弗兰克·达拉伯特没有任何问题。
def save_data_to_db(data: list | None,
db_url: str) -> None:
conn: sqlite3.Connection = init_database(db_url)
print('Database loaded...')
cursor: sqlite3.Cursor = conn.cursor()
for datum in data:
sql = "insert into movie250" \
"(" \
"`info_link`, " \
"`pic_link`, " \
"`chinese_name`, " \
"`other_name`, " \
"`score`, " \
"`rate`, " \
"`introduction`, " \
"`info`" \
") " \
"values " \
f"('{datum[0]}', '{datum[1]}', '{datum[2]}', '{datum[3]}', {datum[4]}, {datum[5]}, '{datum[6]}', '{datum[7]}')"
print(f"Executing sql: [{sql}]")
cursor.execute(sql)
conn.commit()
return None
发生错误之前的最后一个SQL运行:
insert into movie250(`info_link`, `pic_link`, `chinese_name`, `other_name`, `score`, `rate`, `introduction`, `info`) values ('https://movie.douban.com/subject/1291561/', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2557573348.jpg', '千与千寻', '千と千尋の神隠し', 9.4, 2043030, '最好的宫崎骏,最好的久石让 ', '导演: 宫崎骏 Hayao Miyazaki 主演: 柊瑠美 Rumi Hîragi 入野自由 Miy... 2001 日本 剧情 动画 奇幻')
完整堆栈跟踪报告:
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm 2021.3.3\plugins\python\helpers\pydev\pydevd.py", line 1483, in _exec
pydev_imports.execfile(file, globals, locals) # execute the script
File "C:\Program Files\JetBrains\PyCharm 2021.3.3\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "D:/workspace/python/douban-movies-spider/main.py", line 214, in <module>
save_data_to_db(data_list, "./movies.db")
File "D:/workspace/python/douban-movies-spider/main.py", line 199, in save_data_to_db
cursor.execute(sql)
sqlite3.OperationalError: near "s": syntax error
I want to insert some data to the database, and using the code below, but when I running it, the python interpreter repoted sqlite3.OperationalError: near "s": syntax error
. Then I copied the sql printed by python link insert into movie250(info_link, pic_link, chinese_name, other_name, score, rate, introduction, info) values ('https://movie.douban.com/subject/1292052/', 'https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg', '肖申克的救赎', 'The Shawshank Redemption', 9.7, 2615494, '希望让人自由', '导演: 弗兰克·德拉邦特 Frank Darabont 主演: 蒂姆·罗宾斯 Tim Robbins ... 1994 美国 犯罪 剧情')
to sqlite console and there is no any problem.
def save_data_to_db(data: list | None,
db_url: str) -> None:
conn: sqlite3.Connection = init_database(db_url)
print('Database loaded...')
cursor: sqlite3.Cursor = conn.cursor()
for datum in data:
sql = "insert into movie250" \
"(" \
"`info_link`, " \
"`pic_link`, " \
"`chinese_name`, " \
"`other_name`, " \
"`score`, " \
"`rate`, " \
"`introduction`, " \
"`info`" \
") " \
"values " \
f"('{datum[0]}', '{datum[1]}', '{datum[2]}', '{datum[3]}', {datum[4]}, {datum[5]}, '{datum[6]}', '{datum[7]}')"
print(f"Executing sql: [{sql}]")
cursor.execute(sql)
conn.commit()
return None
I tried to debug it, and I find that the value sql is
The last sql run before error occurred:
insert into movie250(`info_link`, `pic_link`, `chinese_name`, `other_name`, `score`, `rate`, `introduction`, `info`) values ('https://movie.douban.com/subject/1291561/', 'https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2557573348.jpg', '千与千寻', '千と千尋の神隠し', 9.4, 2043030, '最好的宫崎骏,最好的久石让 ', '导演: 宫崎骏 Hayao Miyazaki 主演: 柊瑠美 Rumi Hîragi 入野自由 Miy... 2001 日本 剧情 动画 奇幻')
Full Stack Trace Report:
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm 2021.3.3\plugins\python\helpers\pydev\pydevd.py", line 1483, in _exec
pydev_imports.execfile(file, globals, locals) # execute the script
File "C:\Program Files\JetBrains\PyCharm 2021.3.3\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "D:/workspace/python/douban-movies-spider/main.py", line 214, in <module>
save_data_to_db(data_list, "./movies.db")
File "D:/workspace/python/douban-movies-spider/main.py", line 199, in save_data_to_db
cursor.execute(sql)
sqlite3.OperationalError: near "s": syntax error
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
cursor.executemany()
感谢 @superstormer的评论,所有这些人都给出了这些想法。
cursor.executemany()
Thanks to @SuperStormer's comment, and all those people gave the ideas.