假设我engine指向MySQL数据库:
engine = create_engine('mysql://arthurdent:answer42@localhost/dtdb', echo=True)
Run Code Online (Sandbox Code Playgroud)
我可以通过以下方式填充dtdb表格,FK等:
metadata.create_all(engine)
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法来生成包含所有DDL语句的SQL文件,而不是实际应用这些DDL语句dtdb?
到目前为止,我已经采取了捕获SQLAlchemy日志输出echo=True,并手动编辑它.但那太痛苦了.
看起来SA有相当复杂的模式管理API,但我还没有看到简单地将模式定义作为文本流式传输的示例.
Ant*_*sma 14
快速回答在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)))
Run Code Online (Sandbox Code Playgroud)
在SQLAlchemy 0.9中,语法被简化了.
engine = create_engine(
'mssql+pyodbc://./MyDb',
strategy='mock',
executor= lambda sql, *multiparams, **params: print (sql)
Run Code Online (Sandbox Code Playgroud)
更长的答案是捕获输出仍然有一些小问题.与文字类型的编码一样.但这对任何人来说都不是一个大问题.您总是可以让SQLAlchemy以编程方式创建一个空数据库并从那里转储SQL.
更困难的问题是处理架构迁移.这是SQLAlchemy-migrate可以帮助您的地方.
| 归档时间: |
|
| 查看次数: |
4049 次 |
| 最近记录: |