SQLAlchemy Core和SQLAlchemy ORM之间的目的有何不同?
答案 0 :(得分:16)
顾名思义,ORM是一个对象 - 关系映射器:它的目的是将数据库关系表示为Python对象。
核心是查询构建器。它的目的是提供一种编程方法来生成SQL查询(和DDL) - 但这些查询的结果只是元组(有一点额外的魔力),而不是你自己的对象(在这种情况下,“你的”是“应用程序开发人员”的设计。
通常,如果您尝试以编程方式构建查询(特别是基于仅在运行时可用的信息),您应该使用核心。如果您正在尝试构建应用程序MVC样式并希望数据库支持的对象成为“模型”,那么您应该使用ORM。
答案 1 :(得分:0)
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将提供更多方法来简化对象关系映射。