我想实现一个函数,该函数提供有关数据库中存在的所有表(以及它们的列名)的信息(不仅仅是那些用SQLAlChemy创建的表).在阅读文档时,在我看来,这似乎是通过反射完成的,但我没有设法让一些东西正常工作.关于如何做到这一点,有什么建议或例子吗?
我想实现一个函数,该函数提供有关数据库中存在的所有表(以及它们的列名)的信息(不仅仅是那些用SQLAlChemy创建的表).在阅读文档时,在我看来,这似乎是通过反射完成的,但我没有设法让一些东西正常工作.关于如何做到这一点,有什么建议或例子吗?
从引擎开始:
from sqlalchemy import create_engine
engine = create_engine("postgresql://u:p@host/database")
所有表格/列名称的快速路径,请使用判断器:
from sqlalchemy import inspect
inspector = inspect(engine)
for table_name in inspector.get_table_names():
for column in inspector.get_columns(table_name):
print("Column: %s" % column['name'])
或者,使用元数据/表:
from sqlalchemy import MetaData
m = MetaData()
m.reflect(engine)
for table in m.tables.values():
print(table.name)
for column in table.c:
print(column.name)
文档数量:http://docs.sqlalchemy.org/en/rel_0_9/core/reflection.html#reflecting-all-tables-at-once