尝试过类似 cur.execute('SELECT ? FROM translations WHERE imagename = ? ', (target, filename,))
但它只是返回 [('de',), ('de',), ('de',), ('de',), ('de',), ('de',)]
成为目标 = 'de'
通过 SQL 选择整行,然后从结果中获取相关值。就像是:
result = cur.execute('SELECT * FROM translations WHERE imagename = ?', (filename,))
texts = [row[target] for row in result.fetchall()]
不能用于数据库?
对象名称,例如表名和列名。允许这样做会带来很大的安全风险。这里的一种解决方法是只为每个逻辑流维护单独的语句,例如
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,))