Python SQLite3不会为变量执行通配符

时间:2018-02-02 05:22:40

标签: python database sqlite

我用sqlite3创建了一个数据库,但我无法使用通配符访问和检索数据。

要使用值案例Samsung Galaxy S9 检索h1列,通配符'%?%'不起作用。

我收到错误:

Traceback (most recent call last):
  File "regex_query.py", line 13, in <module>
    for row in c.execute("SELECT * FROM products WHERE h1 LIKE '%?%' ORDER BY price", (t,)):
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 0, and there are 1 supplied.

这是我的代码。我尝试了各种迭代查询,但它们似乎都没有工作。

为了进行调试,我还将字符串“Samsung”直接插入到查询中并且它可以正常工作。只有问题是那个

import sqlite3

conn = sqlite3.connect('database.db')

c = conn.cursor()

t = 'Samsung'

for row in c.execute("SELECT * FROM products WHERE h1 LIKE '%?%' ORDER BY price", (t,)):
    print row
    print c.fetchall()

我一直在寻找解决方案几个小时,但我找不到问题所在。感谢。

1 个答案:

答案 0 :(得分:1)

除非您使用的是需要VALUES的sql,否则我认为该方法无效。这应该可以工作

for row in c.execute("SELECT * FROM products WHERE h1 LIKE '%{}%' ORDER BY price".format(t))