我正在使用sqlite3
,我正在尝试使用SELECT查询从数据库中动态返回特定列,问题是我不断获取列名而不是实际行。这是一个示例代码
import sqlite3
conn = sqlite3.connect('db_name.db')
c = conn.cursor()
query = 'SELECT ?, ? FROM devices'
columns = ('name','network-id')
c.execute(query, columns)
print(c.fetchall())
这是我得到的结果:
[('name', 'network_id'), ('name', 'network_id'), ('name', 'network_id'), ('name', 'network_id'), ('name', 'network_id'), ('name', 'network_id'), ('name', 'network_id'), ('name', 'network_id'), ('name', 'network_id')]
这非常烦人,我只想从我的结果中找回特定的列,但我得到的是列名。任何帮助将不胜感激
答案 0 :(得分:0)
您不能将SQL参数用于表名或列名,仅用于文字值。
您的查询相当于:
SELECT 'name', 'network-id' from devices
只需将列名直接放入查询中:
columns = ('name','network-id')
query = 'SELECT %s from devices' % ','.join(columns)
答案 1 :(得分:0)
在SELECT
查询中使用 name,network-id 列,如下所示:
query = 'SELECT name, network-id FROM devices'
?用于重新查询查询中的值,例如
query = 'SELECT name, network-id FROM devices where name = ?'
columns = ('my-name')
c.execute(query, columns)