嘗試過類似 cur.execute('SELECT ? FROM translations WHERE imagename = ? ', (target, filename,))但它只是返回 [('de',), ('de',), ('de',), ('de',), ('de',), ('de',)]成為目標(biāo) = 'de'
3 回答

DIEA
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊
不能用于數(shù)據(jù)庫?對(duì)象名稱,例如表名和列名。允許這樣做會(huì)帶來很大的安全風(fēng)險(xiǎn)。這里的一種解決方法是只為每個(gè)邏輯流維護(hù)單獨(dú)的語句,例如
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,))

當(dāng)年話下
TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
通過 SQL 選擇整行,然后從結(jié)果中獲取相關(guān)值。就像是:
result = cur.execute('SELECT * FROM translations WHERE imagename = ?', (filename,)) texts = [row[target] for row in result.fetchall()]
添加回答
舉報(bào)
0/150
提交
取消