OperationalError:“%”附近:Python中的sqlite3语法错误

时间:2019-02-15 00:32:19

标签: python sql sqlite syntax operationalerror

我在Python中使用sqlite3包,并试图从名为orders的表中选择一个条目。我想获得一个条目,其中列order_date的值以18结尾(这是一个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

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

1 个答案:

答案 0 :(得分:1)

您应将?用作绑定变量的占位符,而不要使用%s

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