我正在抓取某个网站以获取某些细节,然后从那里我想将它们保存在数据库中,下面是上述任务的功能:
def store(title, body):
conn = sqlite3.connect('test2.db')
print("Connection established")
conn.execute("insert into crawled (title, body) values (\"%s\", \"%s\");",(title, body))
conn.commit()
print("Records Created Successfully")
conn.close()
但我一直收到这个错误:
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 0, and there are 2 supplied
我已经浏览了 Stack 中的所有可用解决方案,但没有人解决我的问题,可以请,请有人在那里向我显示我的错误。
答案 0 :(得分:0)
问题似乎源于一个小的语法错误。
对于执行命令,请使用:
conn.execute("insert into crawled (title, body) values (\"%s\", \"%s\");" %(title, body))
请注意%
开头的%(title, body)
以及之前没有逗号。
或者:
conn.execute("insert into crawled (title, body) values (?, ?);",(title, body))
请注意括号前的逗号以及?
周围缺少引号。
sqlite3 documentation应该包含所需的所有信息。请注意,它提到使用选项二更好,以避免潜在的SQL注入攻击。