0

尝试过类似 cur.execute('SELECT ? FROM translations WHERE imagename = ? ', (target, filename,))

但它只是返回 [('de',), ('de',), ('de',), ('de',), ('de',), ('de',)]

成为目标 = 'de'

4

3 回答 3

0

由于参数被定义为传递数据值,因此您必须在程序中处理它。您可以获取所有列并在内存中处理它

[更新]

指向上面指定的解决方案

于 2019-10-20T03:13:48.627 回答
0

通过 SQL 选择整行,然后从结果中获取相关值。就像是:

result = cur.execute('SELECT * FROM translations WHERE imagename = ?', (filename,))
texts = [row[target] for row in result.fetchall()]
于 2019-10-20T03:09:51.380 回答
0

不能用于数据库?对象名称,例如表名和列名。允许这样做会带来很大的安全风险。这里的一种解决方法是只为每个逻辑流维护单独的语句,例如

if target == "col1":
    cur.execute('SELECT col1 FROM translations WHERE imagename = ?', (filename,))
elif target == "col2":
    cur.execute('SELECT col2 FROM translations WHERE imagename = ?', (filename,))
else:
    cur.execute('SELECT col3 FROM translations WHERE imagename = ?', (filename,))
于 2019-10-20T03:11:53.680 回答