因此,我试图将列名放入 SQL 查询中
import sqlite3
db = sqlite3.connect('path/to/my/database.sqlite')
cur = db.cursor()
def get_val(field):
return cur.execute('''
SELECT x, y, :field FROM literal_table
WHERE
:valid_field_name > 0 AND
(some other conditions)
GROUP BY x, y''',
{'field': field}).fetchall()
get_val('valid_field_name')
但是当我执行代码时,python没有从列中获取值,而是返回
[(x1, y1, u'valid_field_name'), (x2, y3, u'valid_field_name'), ...]
我知道您不能对表名进行编码,但是文档中有列名被参数化的示例。我已经用字符串格式编写了一个解决方案(代码用于私有数据处理,所以 SQL 注入不是问题),但我需要了解发生了什么!
我正在使用 Python 2.7.3