Sqlite3 插入数据 sqlite3.operationalerror: near "%": syntax error

在向sqlite中插入数据时习惯性的使用了%s的点位符,没想到得到的结果却是:

  File "/root/env/scrapy_env/lib/python3.6/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "/mnt/d/code/sun/sun/pipelines.py", line 30, in process_item
    self.cursor.execute(sql, (title, status, content))
sqlite3.OperationalError: near "%": syntax error

一开始这错误让我看得莫名其妙,明明sql语句没写错,以为是我的数据有问题。在一番排查无果后找谷歌帮忙,最后终于找到了点:

参考链接:https://blog.csdn.net/u013264172/article/details/52987954

于是,我将代码进行了修改:

修改前:(尝试过将%s改成"%s",无果)

sql = 'Insert into questions(title, status, content) values(%s,%s,%s);'

最后根据上面的文章中的方式改成下面的:

sql = 'Insert into questions(title, status, content) values(?,?,?);'

注:在文章中,博主有在sql语句自己拼接数据,这样其实是不安全的。

sql = 'Insert into questions(title, status, content) values(?,?,?);'
para = [title, status, content]
self.cursor.execute(sql, para)

最终达到目的。

上一篇:Scrapy 发送POST请求

下一篇:人口数据分析案例