【发布时间】:2017-09-04 04:22:06
【问题描述】:
SQLAlchemy Core 和SQLAlchemy ORM 的用途有什么区别?
【问题讨论】:
标签: sqlalchemy
SQLAlchemy Core 和SQLAlchemy ORM 的用途有什么区别?
【问题讨论】:
标签: sqlalchemy
顾名思义,ORM 是一个对象-关系映射器:其目的是将数据库关系表示为 Python 对象。
核心是一个查询构建器。它的目的是提供一种编程方式来生成 SQL 查询(和 DDL)——但这些查询的结果只是元组(有一点额外的魔法),而不是你自己的对象(在这种情况下,“你的”是, “应用程序开发人员的”)设计。
一般来说,如果您尝试以编程方式构建查询(特别是基于仅在运行时可用的信息),您应该使用核心。如果您尝试构建应用程序 MVC 样式并希望数据库支持的对象成为“模型”,那么您应该使用 ORM。
【讨论】:
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 将提供更多方法来简化对象关系映射。
【讨论】: