Python: sqlite3 参数化查询没有结果

Python: sqlite3 parametrized query gets no results

我尝试使用参数化查询 select 来自 table 的条目。他们没有 return 任何结果。代码如下:

var = str.capitalize(var)
selected = db.execute('select a, b, c from table1 where a=(?)', [var])

var始终为三个小写字符串(如'xxx'),'a'列在数据库中为TEXT类型,包含三个大写字符串(如'XXX').

我也尝试了可怕的:

selected = db.execute('select a, b, c from table1 where a="%s"' % str.capitalize(var)])

因为我认为是execute方法省略引号的问题,但也没用。唯一让我得到任何结果的是:

selected = db.execute('select a, b, c from table1 where a="XXX"')

我在 Windows 10 上使用 Python 3.6.0,有人 here 建议这可能是个问题,但他们的解决方案对我也不起作用。

capitalize 仅将 第一个 字母转换为大写。要将所有内容转换为大写,请使用 upper()

参数必须作为 tuple/dictionary

传递

使用

selected = db.execute('select a, b, c from table1 where a=?', (var.upper(),))

selected = db.execute('select a, b, c from table1 where a=:var', {"var":var.upper()})

阅读更多here

您必须使用 upper 将其转换为全部大写,试试这个:

var = var.upper()
selected  =  db.execute('select a, b, c from table1 where a=?', (var,))

这个也可以:

var = var.upper()
selected = db.execute('select a, b, c from table1 where a="%s"'%var]