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

时间:2017-05-21 10:56:02

标签: python sqlite sql-parametrized-query

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

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

var总是一个三个小写的字符串(例如' xxx'),' a' column在数据库中的类型为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,有人here 认为这可能是一个问题,但他们的解决方案对我来说也不起作用。

2 个答案:

答案 0 :(得分: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()})

了解更多here

答案 1 :(得分: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]