You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中利用数据库列名数组生成指定结构的查询结果字典列表

解决方案

你现在的循环写法有问题——每次只查单个列,既费效率,也没法直接整出你要的多列字典结构。正确的做法是一次性查完所有需要的列,再把结果转成字典列表:

1. 构造完整查询语句

把列名数组拼成逗号分隔的字符串,作为SELECT的字段部分:

columns = ['id', 'name']
# 把列名拼接成SQL需要的格式
query = f"SELECT {', '.join(columns)} FROM Database"

2. 执行查询并转换结果

执行查询后,把每一行结果和列名对应起来生成字典,最后组成列表:

cursor.execute(query)
# 取出所有查询结果
rows = cursor.fetchall()
# 用zip把列名和每行数据配对,转成字典
result = [dict(zip(columns, row)) for row in rows]

这时候result就是你要的格式:

[{"id":"1","name":"John"}, {"id":"2","name":"Peter"}, ...]

额外提醒:防SQL注入

如果你的列名是来自用户输入这类不可信的来源,直接拼接会有安全风险。这时候要先验证列名是否是表的合法列,比如:

# 先提前拿到表的所有合法列名
valid_columns = ['id', 'name', 'age']
# 过滤掉非法列名
safe_columns = [col for col in columns if col in valid_columns]
if not safe_columns:
    raise ValueError("没有合法的列可查询")
query = f"SELECT {', '.join(safe_columns)} FROM Database"

内容的提问来源于stack exchange,提问作者Scaldor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:32:12