【问题标题】:What are the benefits of using Elixir [closed]使用 Elixir 有什么好处 [关闭]
【发布时间】:2011-04-26 20:31:32
【问题描述】:

... vs 声明性 sqlalchemy ?

【问题讨论】:

    标签: python sqlalchemy python-elixir


    【解决方案1】:

    你可以说 Elixir 的诞生是因为 SQLAlchemy 对某些人来说声明性不够。

    来自Elixir 网站:

    Elixir 旨在取代 ActiveMapper SQLAlchemy 扩展,以及 TurboEntity 项目,但没有 打算替换 SQLAlchemy 的核心 功能,而是专注于 提供更简单的语法 不定义模型对象 需要充分的表现力 SQLAlchemy 的手动映射器 定义。

    【讨论】:

      【解决方案2】:

      Elixir 语法在我从头开始为给定应用程序构建数据库时很有用,而且一切都是事先弄清楚的。

      在遗留数据库(以及其他类似的逻辑不可变模式)上使用 SQLAlchemy 时,我遇到了最好的运气。 SQLSoup 插件特别有用,用于一次性提取只读数据,以准备将其迁移到其他地方。

      YMMV,但 Elixir 并不是真正为适应旧模式而设计的——而且对于大多数中小型项目来说,SQLAlchemy 本身就太过分了(当然在我看来)。

      【讨论】:

        【解决方案3】:

        我有started a list here 关于 elixir 与 sqlalchmey 的实际(技术)差异/优势,但我不知道我的说法是否正确,因为我对 sqlalchemy 的了解非常有限(我使用了非常小的一部分 elixir和 sqla)。

        答案在 sqla 中显示代码示例并在 elixir 中显示相同的代码示例以显示差异,这将是非常明智的,因为在 stackoverflow 中回答了一些比较问题(例如,我认为 mako 与 jinja2)

        无论如何,这是我的清单,如果有人纠正我(纠正我对 sqlalchemy 的假设),我将不胜感激

        • Elixir 实现了 Active Record 模式,旨在替换 ActiveMapper SQLAlchemy 扩展。 (过时了:sqlalchemy 赶上了?)

        • 黑白模型的关系很清晰(呃):OneToMany、ManyToOne、ManyToMany 和 OneToOne 比 sqla 的关系更清晰。一目了然,您可以看到模型之间的关系。

        • 继承比 sqlalchemys 更方便。由于您从类派生,因此它也更加明显。在 sqla 中,您必须调整 with_polymorphisme 和 polymorphic_on 属性。

        • 继承:在 elixir 中,表、列和外键是自动创建的,但在 sqlalchemy 中不是。 (100% 正确吗?)

        • Elixir 自动为所有表创建一个 ID 列(如果没有声明其他 primary_key)

        • Elixir 自动为关系创建 FK,sql 不会 (?)

        • 在 elixir 中,大多数时候,您不必在关系中指定 backref。在 sqla 中,您总是必须 (?)

        • Elixir 有版本控制扩展(sql 没有?)

        • Elixir 有一个关联扩展,可以创建多对多关系并提供不错的 select_by_XXX 方法,其中 XXX 是“关联”类的名称。 Sqla 没有这种扩展(?)

        • 继承关系在 Elixir 中是透明的。在 sqla 中,它不是,你必须这样做:http://www.sqlalchemy.org/docs/reference/ext/declarative.html#mixing-..。)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-03-24
          • 2012-09-04
          • 1970-01-01
          • 2014-02-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-07
          相关资源
          最近更新 更多