我尝试使用参数化查询从表中选择条目。他们不会返回任何结果。代码如下:
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 认为这可能是一个问题,但他们的解决方案对我来说也不起作用。
答案 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]