Max*_*axU 5 python metadata sqlalchemy
我知道如何使用 SQL Alchemy 读取现有数据库表的元数据:
meta = MetaData(bind=engine)
meta.reflect(schema="schema_name", views=True, resolve_fks=False)
res = meta.tables["table_name"]
Run Code Online (Sandbox Code Playgroud)
如何获取 SQL 查询 ( select * from tab1 join tab2 on tab1.id = tab2.id) 的元数据或列类型?
当您使用 sqlalchemy Core(而不是 ORM)执行查询时,您将返回一个ResultProxy对象实例。
ResultProxy是底层 DBAPI 游标的包装器,如果您的代码使用的 RDBMS 驱动程序是按照PEP 249 -- Python 数据库 API 规范 v2.0或PEP 248 -- Python 数据库 API 规范 v1.0实现的,那么您应该可以访问底层ResultProxy.cursor对象,而底层对象又应该具有.description属性。
因此,类似于下面的代码应该可以工作:
res = session.execute(my_sql_statement)
columns = res.cursor.description
for col in columns:
print(col.name, col.type_code, col.display_size, col.internal_size, col.precision, col.scale, col.null_ok)
Run Code Online (Sandbox Code Playgroud)
对于像这样的小型查询SELECT "user".id AS user_id, "user".name AS user_name, "group".id AS group_id, "group".name AS group_name FROM "user" JOIN user_group AS user_group_1 ON "user".id = user_group_1.user_id JOIN "group" ON "group".id = user_group_1.group_id,这是我在 PostgreSQL 数据库中看到的输出:
user_id 23 None 4 None None None
user_name 1043 None 250 None None None
group_id 23 None 4 None None None
group_name 1043 None 250 None None None
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2557 次 |
| 最近记录: |