我想使用sqalchemy打印表格的所有内容。我似乎无法弄清楚检查的工作原理。
我想实现类似的目标:
column1: value1, column2: value4
column1: value2, column2: value5
column1: value3, column2: value6
在一个如下所示的表格中:
Table_1:
+---------+---------+
| column1 | column2 |
+---------+---------+
| value1 | value4 |
| value2 | value5 |
| value3 | value6 |
+---------+---------+
答案 0 :(得分:2)
虽然我不知道如何使用inspect
来执行此操作,但是我通过常规查询实现了期望的输出。对于此示例,我根据您的示例创建了一个sqlite
表。首先,我们连接并反思这个现有数据库。
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import select
eng = create_engine("sqlite:///databases/example_table.db")
Base = automap_base()
Base.prepare(eng, reflect=True)
Table = Base.classes.example_table
为便于查询,我们实例化了一个session
,
Session = sessionmaker(bind=eng)
session = Session()
并执行查询,将结果保存到result
。
stmt = select('*').select_from(Table)
result = session.execute(stmt).fetchall()
此查询的元素是sqlalchemy
RowProxy
类的实例,该类具有一个keys
方法,该方法可用于访问列名。因此,我们可以使用一些简短的函数来变换result
。
def result_dict(r):
return dict(zip(r.keys(), r))
def result_dicts(rs):
return list(map(result_dict, rs))
result_dicts(result)
返回
[{'id': 1, 'column1': 'value1', 'column2': 'value4'},
{'id': 2, 'column1': 'value2', 'column2': 'value5'},
{'id': 3, 'column1': 'value3', 'column2': 'value6'}]
答案 1 :(得分:1)