使用SQLAlchemy的db.select查询时如何获取列名:值格式的结果
解决方案
你可以直接通过SQLAlchemy自带的方法或手动转换两种方式实现「列名:值」的返回格式:
方案1:推荐(适配SQLAlchemy 1.4及以上版本)
直接调用结果代理对象的mappings()方法,原生返回键值对格式的结果,修改后的代码如下:
connection = engine.connect() metadata = db.MetaData() report = db.Table('report', metadata, autoload=True, autoload_with=engine) query = db.select([report]) ResultProxy = connection.execute(query) # 调用mappings()后再获取结果,直接返回[{列名:值}, {列名:值}]格式的列表 ResultSet = ResultProxy.mappings().fetchall()
如果需要纯Python字典类型,可以额外加一层转换:
result_dict = [dict(row) for row in ResultProxy.mappings()]
方案2:低版本兼容方案
如果你的SQLAlchemy版本不支持mappings()方法,可以手动通过查询列名和行值拼接字典:
connection = engine.connect() metadata = db.MetaData() report = db.Table('report', metadata, autoload=True, autoload_with=engine) query = db.select([report]) ResultProxy = connection.execute(query) ResultSet = ResultProxy.fetchall() # 获取查询列名,遍历行手动生成字典 columns = ResultProxy.keys() result_dict_list = [dict(zip(columns, row)) for row in ResultSet]
内容的提问来源于stack exchange,提问作者Nikolay Vatan
相关产品推荐
相关产品推荐

