SQLAlchemy Core和ORM有什么区别?

39
2个回答

43

ORM,即对象关系映射器:其目的是将数据库关系表示为Python对象。

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

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


13

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

Basic Architecture of SQLAlchemy

因此,如果我们想要在创建engine之后执行原始SQL查询,我们可以使用SQLAlchemy-Core。 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还提供了许多方法来使对象关系映射更加轻松。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接