SQLAlchemy(ORM)与原始SQL查询

2024-06-03 01:34:51 发布

您现在位置:Python中文网/ 问答频道 /正文

在上个月,我致力于研究Flask,一个用于构建web应用程序的python框架。

根据我在网上找到的不同教程,我发现了SQLAlchemy。

老实说,我发现它很复杂,也不是很有用,因为我对SQL语言有很好的了解。

我想了解的是,在使用像SQLAlchemy这样的ORM时是否有我所缺少的主要好处(也许在使用纯sql时有一些我不知道的安全问题?)。

另外,如果您能告诉我使用纯SQL查询的最佳python库是什么,我将不胜感激。


Tags: 框架web语言应用程序flasksqlsqlalchemyorm
1条回答
网友
1楼 · 发布于 2024-06-03 01:34:51

有很多。使用ORM而不是原始SQL查询的最大优点是:

  1. 健壮性:不必担心在为不同数据库源编写SQL查询时可能会出现语法错误。实际上,您不需要知道所有数据库源的语法。相同的ORM查询适用于所有人。无论是基于SQL的MySQL引擎,还是基于NoSQL的MongoDB引擎
  2. 可伸缩性:随着业务需求或处理的数据种类/数量的变化。更改数据库引擎是非常常见的。您不必担心查询中的中断,因为ORM会处理这个问题。唯一的条件是ORM应该支持该数据源。
  3. 安全性:您不必担心由于SQL Injections等原因造成的安全漏洞,因为ORM已经对它们起到了保护作用
  4. 信任:世界各地有很多聪明的头脑,他们致力于创建ORM来处理场景和他们长期面临的问题。一、 因为一个人可能会错过很多方面。因此,使用ORM不太容易出现我们可能面临的意外问题。(这并不意味着ORM是完美的,但它们不太容易出错)
  5. 时间:通过ORMs,您可以获得大量开源库的支持。例如,对于数据迁移、检查数据的web门户、数据序列化程序,等,因此,您可以为更重要的事情节省时间。

尽管它们也有一些副作用:

  1. 速度:ORMs作为代码和查询执行之间的中间件,速度较慢。实际上,ORMs在内部创建一个相同的原始查询来获得所需的结果
  2. 作用域:ORM可能会限制实现的作用域。正如我所提到的,它们充当一个中间件。数据库引擎可能支持某些功能,但在ORM中没有实现。但在这种情况下,您总是可以选择编写原始SQL查询以获得所需的结果。

我喜欢ORMs,因为我提到了它的优点。

相关问题 更多 >