【问题标题】:Can SQLAlchemy do a non-destructive alter of the db comparing the current model with db schema?SQLAlchemy 可以对数据库进行非破坏性更改,将当前模型与数据库模式进行比较吗?
【发布时间】:2011-02-17 23:44:56
【问题描述】:

基本上我正在寻找一个等效的 DataMapper.auto_upgrade!来自 Ruby 世界。

换句话说:

  1. 更换型号
  2. 运行一些魔法 -> 调查并更改当前数据库架构以反映模型
  3. 利润

当然,在某些情况下,这种更改不可能是非破坏性的,例如。当您删除某些属性时。但我不是指这种情况。我正在寻找一种通用的解决方案,它在快速原型设计和更改架构时不会受到影响。

TIA

【问题讨论】:

    标签: python orm sqlalchemy


    【解决方案1】:

    Sqlalchemy-migrate (http://packages.python.org/sqlalchemy-migrate/) 旨在帮助执行这些类型的操作。

    【讨论】:

    • SQLAlchemy-migrate 的问题在于它引入了迁移(将您从数据映射器模式切换到更像活动记录模式的模式)并以自己的格式存储元数据,因此您注定要使用这种机制更进一步。我的观点是没有必要,因为元数据 is 已经在数据库中,并且对于几个领先的 SQL 后端来说,很容易获得这些信息。这就是 DataMapper 所做的。另外我的观点不是学术性的,数据库架构将被其他方更改,迁移是不行的。
    • 出于多种原因,我对 sqlalchemy-migrate 并不着迷。除了你的之外,它是一个非常泄漏的抽象,它不支持 MS SQL。我可以通过 MetaData 和 Inspector 类获得我想要的大部分信息。我目前的一个差距是获取有关信息和创建视图。在 Inspector 中,您可以通过 SQL 来创建视图,但我宁愿以不那么原始的方式向我展示视图的结构。
    猜你喜欢
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    相关资源
    最近更新 更多