从现有数据库 SQLAlchemy 获取 DDL

Posted

技术标签:

【中文标题】从现有数据库 SQLAlchemy 获取 DDL【英文标题】:Get DDL from existing databases SQLAlchemy 【发布时间】:2020-11-04 09:30:58 【问题描述】:

我正在使用 SQLAlchemy 连接到 AWS Redshift 中的 postgresql 数据库进行一些数据处理,我需要提取特定 Schema 中每个表的 DDL 信息。我无法运行像pg_dump --schema-only 这样的任何命令。提取 DDL 的最简单方法是什么?

【问题讨论】:

【参考方案1】:

您可以获取所有带有反射系统的表并打印每个表的CreateTable 构造:

from sqlalchemy.schema import MetaData
from sqlalchemy.schema import CreateTable

meta = MetaData()
meta.reflect(bind=engine)
for table in meta.sorted_tables:
    print(CreateTable(table).compile(engine))

【讨论】:

有没有其他方法可以在不反映数据库的情况下做到这一点?看到这个问题:***.com/questions/64680802/…

以上是关于从现有数据库 SQLAlchemy 获取 DDL的主要内容,如果未能解决你的问题,请参考以下文章

SQLAlchemy 获取类对象而不是实际结果

sqlalchemy 现有数据库查询

SQLAlchemy - MySQL - 检查现有表中是不是存在行[重复]

sqlalchemy:查询数据库中的现有表

从 flask-sqlalchemy db 获取所有模型

如何从 sqlalchemy 中的 session/engine/meta 获取表名及其数据类型?