【问题标题】:What is the difference between sqlalchemy core and ORM?sqlalchemy 核心和 ORM 有什么区别?
【发布时间】:2017-09-04 04:22:06
【问题描述】:

SQLAlchemy CoreSQLAlchemy ORM 的用途有什么区别?

【问题讨论】:

    标签: sqlalchemy


    【解决方案1】:

    顾名思义,ORM 是一个对象-关系映射器:其目的是将数据库关系表示为 Python 对象。

    核心是一个查询构建器。它的目的是提供一种编程方式来生成 SQL 查询(和 DDL)——但这些查询的结果只是元组(有一点额外的魔法),而不是你自己的对象(在这种情况下,“你的”是, “应用程序开发人员的”)设计。

    一般来说,如果您尝试以编程方式构建查询(特别是基于仅在运行时可用的信息),您应该使用核心。如果您尝试构建应用程序 MVC 样式并希望数据库支持的对象成为“模型”,那么您应该使用 ORM。

    【讨论】:

      【解决方案2】:

      SQLAlchemy-ORM 是在 SQLAlchemy-Core 之上开发的。我们可以在下面看到 SQLAlchemy 的基本架构。

      因此,如果我们愿意,我们可以在创建 engine 后使用 SQLAlchemy-Core 执行原始 SQL 查询。 SQLAlchemy 引擎对象提供了一组方法来执行基本操作,如 connect()、execute() 等。 例如

      engine = create_engine('mysql://scott:tiger@localhost/test')
      connection = engine.connect()
      result = connection.execute("select username from users")
      for row in result:
          print("username:", row['username'])
      connection.close()
      

      如果你想要 SQLAlchemy 的 ORM 特性,你必须使用 ORM 部分。您可以在哪里创建将被视为表的 python 类,并且该类的属性将被视为列。除此之外,SQLAlchemy 将提供更多方法来简化对象关系映射。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-25
        • 1970-01-01
        • 2017-03-23
        • 2018-09-05
        • 2012-08-29
        • 1970-01-01
        • 2011-08-03
        • 2014-10-12
        相关资源
        最近更新 更多