基于pyodbc读取数据库字典列表并按指定键值查询条目
Python通过pyodbc读取数据库并查找指定条目解决方案
需求说明
- 使用pyodbc读取SQL Server数据库
- 将游标结果转换为字典列表
- 查找并打印
user_username等于JOHNN的条目
修改后的完整代码
from flask import Flask import pyodbc app = Flask(__name__) # 建立数据库连接 conn = pyodbc.connect('Driver={SQL Server};' 'Server=DESKTOP-9JKA425;' 'Database=PD;' 'Trusted_Connection=yes;') cursor = conn.cursor() cursor.execute('SELECT * FROM Users') # 获取表头并转换为字典列表 columns = [column[0] for column in cursor.description] results = [] for row in cursor.fetchall(): results.append(dict(zip(columns, row))) # 查找指定条目 target_username = 'JOHNN' for item in results: if item.get('user_username') == target_username: print(f"找到匹配条目:{item}") break else: print(f"未找到user_username为{target_username}的条目") # 关闭连接,避免资源泄漏 conn.close()
关键说明
- 字典列表转换:通过
cursor.description获取表头字段名,再用zip将每行数据与字段名配对生成字典,让结果更易读和操作 - 安全查找逻辑:使用
get方法获取user_username字段,避免因字段不存在引发KeyError - 优化连接管理:添加
conn.close()手动关闭连接,也可以用with语句自动管理连接,更简洁安全:
with pyodbc.connect('Driver={SQL Server};' 'Server=DESKTOP-9JKA425;' 'Database=PD;' 'Trusted_Connection=yes;') as conn: cursor = conn.cursor() cursor.execute('SELECT * FROM Users') columns = [column[0] for column in cursor.description] results = [dict(zip(columns, row)) for row in cursor.fetchall()] # 查找逻辑同上
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

