如何在SQLAlchemy中的引擎SQL方言中使用DDL生成文件?

前端之家收集整理的这篇文章主要介绍了如何在SQLAlchemy中的引擎SQL方言中使用DDL生成文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一个指向 MySQL数据库的引擎:
engine = create_engine('MysqL://arthurdent:answer42@localhost/dtdb',echo=True)

我可以用表格,FK等填充dtdb:

Metadata.create_all(engine)

有没有一种简单的方法生成包含所有DDL语句的sql文件,而不是实际将这些DDL语句应用于dtdb?

到目前为止,我已经使用了echo = True生成sqlAlchemy日志输出,并手动编辑它.但那太痛苦了.

看起来SA有相当复杂的模式管理API,但我还没有看到简单地将模式定义作为文本流式传输的示例.

解决方法

快速回答是在 SQLAlchemy 0.8 FAQ.

sqlAlchemy 0.8中你需要做

engine = create_engine(
'mssql+pyodbc://./MyDb',strategy='mock',executor= lambda sql,*multiparams,**params: print (sql.compile(dialect=engine.dialect)))

sqlAlchemy 0.9中,语法被简化了.

engine = create_engine(
'mssql+pyodbc://./MyDb',**params: print (sql)

更长的答案是捕获输出仍然存在一些轻微问题.与文字类型的编码一样.但对于任何人来说,加强和抓住他们的痒都不是一个大问题.您总是可以让sqlAlchemy以编程方式创建一个空数据库并从那里转储sql.

更困难的问题是处理架构迁移.这是SQLAlchemy-migrate可以帮助您的地方.

原文链接:https://www.f2er.com/mssql/77403.html

猜你在找的MsSQL相关文章