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]
我尝试使用参数化查询 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]