首页 > 解决方案 > OperationalError:“%”附近:Python 中 sqlite3 的语法错误

问题描述

sqlite3在 Python 中使用包并尝试从名为orders. 我想获取列的值以order_date18 结尾的varchar条目(该条目的实际值为“10/20/2018”的列)。

根据类似问题的指导,我构建了如下查询:

sql = """SELECT * FROM orders
            WHERE order_date LIKE %s"""

args = ['%' + '18']

c.execute(sql, args)

但我得到了这个:

---------------------------------------------------------------------------
OperationalError                          Traceback (most recent call last)
<ipython-input-51-e6a345ebe6eb> in <module>
      6 args = ['%' + '18']
      7 
----> 8 c.execute(sql, args)
      9 conn.commit()
     10 

OperationalError: near "%": syntax error

我尝试了多种方式来构建查询,但每次都得到相同的错误。根据我浏览过的其他问题,这应该可行。怎么了?

标签: pythonsqlsqlitesyntaxoperationalerror

解决方案


您应该将?其用作绑定变量的占位符,而不是%s

sql = """SELECT * FROM orders
            WHERE order_date LIKE ?"""

推荐阅读