0

我尝试使用参数化查询从表中选择条目。他们不返回任何结果。代码如下:

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)])

因为我认为这是省略引号的执行方法的问题,但它也不起作用。唯一让我得到任何结果的是:

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

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

4

2 回答 2

0

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

参数必须作为元组/字典传递

利用

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()})

在这里阅读更多

于 2017-05-21T11:01:09.223 回答
0

您必须使用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]
于 2017-05-21T11:30:54.470 回答