48

由于非常熟悉用 Python 编写简单的 SQL,我还没有意识到使用 SQLAlchemy 或其他 ORM 可以获得的好处。

它是为那些不喜欢程序中的 SQL 的人设计的吗?还是让您的脚本跨越不同类型的数据库?

或者它让你的脚本更加 Pythonic?

还是对于一些处理底层数据库的任务来说非常方便,它会自动为你做很多琐碎的事情,所以你只需编写 2-3 行代码调用 SQLAlchemy,它就会为你完成所有琐碎的数据库操作?

如果有人可以提供使用纯 SQL 与使用 SQLALchemy 进行演示的代码,并展示其优于纯 SQL 的优势,那将不胜感激。

谢谢!

4

1 回答 1

18

你检查了吗? https://groups.google.com/forum/?fromgroups=#!topic/sqlalchemy/VXXB12-3JCY

此外,Django ORM 和 SQL Alchemy 之间的比较:

http://blog.mathieu-leplatre.info/sqlalchemy-a-brave-new-world.html

粘贴上述谷歌群组链接的回复:

马克 Erbaugh 22/11/2010

我没有任何示例代码,但我已经使用纯 SQL 编写了几个 Python 应用程序(和一个 C++ 应用程序),并且已经开始使用 SQLAlchemy 开发一个新应用程序,所以我将分享我的经验。

让我补充一下,我花了几年时间维护一个中等规模的 SQL 数据库,并编写了许多纯 SQL,尽管不一定使用 Python。

当我的程序访问 SQL 时,我发现自己编写了大量的 SQL 代码来访问数据。很多这样的代码虽然不完全相同,但非常相似并且似乎是多余的。例如,进行简单的单表查找。如果你想做简单的 CRUD(创建、更新和删除),你必须为每个表编写至少三个单独的 SQL 语句。虽然这些 SQL 语句的框架相似,但具体的列名和表名是不同的。如果我提供了列列表和表名,我最终编写了一些 Python 例程来构建 SQL 语句。但这就是 SQLAlchemy 所做的(以及更多),那么为什么要重新发明轮子呢?

对于我的 C++ 应用程序(我没有找到合适的 ORM),我最终编写了一个 Python 脚本来生成 SQL 语句和 C++ 代码来访问表。

另一个优点是您可以相对轻松地处理对数据库结构的更改。在我开发 SA 应用程序时,我意识到我需要在(至少)我的一个表中添加一个新列。我使用的是 SA 的声明式方法,我只需要将列添加到我的声明式中。我不必更改任何 SQL 或 Python 代码。

我在使用 SQLAlchemy 时遇到的一个“问题”是忘记了我使用纯 SQL 做事的方式。在最简单的层面上,SQLAlchemy 可以生成 SQL 和 Python 代码来访问单个表,您可能很想编写 Python 代码来将这种单表访问合并到更大的数据图中,但 SQLAlchemy 的真正强大之处(恕我直言)是它可以自动处理复杂的数据图。

标记

于 2013-03-15T06:41:47.317 回答