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

问题描述 投票:2回答:1

我在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

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

python sql sqlite syntax operationalerror
1个回答
1
投票

你应该使用?as占位符来代替%s

sql = """SELECT * FROM orders
            WHERE order_date LIKE ?"""
© www.soinside.com 2019 - 2024. All rights reserved.