sqlalchemy core和ORM有什么区别?

时间:2017-04-08 22:16:16

标签: sqlalchemy

SQLAlchemy CoreSQLAlchemy ORM之间的目的有何不同?

2 个答案:

答案 0 :(得分:16)

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

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

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

答案 1 :(得分:0)

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

Basic Architecture of 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将提供更多方法来简化对象关系映射。

相关问题