加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:59:14 所属栏目:MsSql教程 来源:网络整理
导读:假设我有一个指向 MySQL数据库的引擎: engine = create_engine('mysql://arthurdent:answer42@localhost/dtdb',echo=True) 我可以用表格,FK等填充dtdb: metadata.create_all(engine) 有没有一种简单的方法来生成包含所有DDL语句的SQL文件,而不是实际将这些D
假设我有一个指向 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可以帮助您的地方.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读