2016-11-19 85 views
5

上个月,我专门研究了Flask,一个用于构建Web应用程序的Python框架。SQLAlchemy(ORM)与原始SQL查询

按照不同的教程我已经在网上找到,我发现SQLAlchemy的。

说实话,我觉得很复杂,不是真的有用,因为我有SQL语言的一个很好的知识。

我想了解什么是如果在使用ORM像我失踪SQLAlchemy的任何重大收益(也许在使用纯SQL,我不知道一些安全问题?)。

此外,我将不胜感激,如果你能指点我有什么用纯SQL查询工作最好的Python库。

+3

阅读:[使用ORM或纯SQL?](http://stackoverflow.com/questions/494816/using-an-orm-or-plain-sql) –

+1

这是一个意见问题。我在纯SQL方面,但这不应该让任何人感到惊讶。 –

+0

@MoinuddinQuadri非常感谢你!我今天看过这篇文章,但自从7岁那年以来,我认为情况可能已经演变。 –

回答

5

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

  1. 健壮性:你不必担心语法错误,你可能会作出书面方式对不同来源DATABSE SQL查询。事实上,你不需要知道所有数据源的语法。相同的ORM查询适用于所有人。无论是像MySQL,NoSQL的或基于引擎喜欢的MongoDB
  2. 可扩展性基于SQL引擎:随着业务需求的变化,或者你要处理的数据的种类/量。改变数据库引擎是很常见的。您不必担心查询中的中断,因为ORM可以处理该问题。唯一的条件是你的ORM应该支持这个数据源。
  3. 安全:你不必担心安全漏洞是由于SQL Injections等作为ORM已经起到对他们的保护罩
  4. 信托:有以防万一谁合作对世界的聪明的头脑巨大的一堆创建ORM来照顾情景以及他们长期面临的问题。我,因为一个人可能会错过许多方面的人。因此,使用ORM不太可能出现我们可能会遇到的意外问题。 (这并不意味着ORM的是完美的,但这些都是不易出错)
  5. 时间:随着奥姆斯你支持大量的开源库。例如,对于数据迁移,用于检查数据的网络门户,数据串行器,等。因此,您可以节省您的时间以寻找更重要的事情。

即使他们有一定的副作用,以及:

  1. 速度:奥姆斯比较慢,因为他们作为你的代码和查询执行之间的中间件。实际上,ORM在内部创建相同的原始查询以获得期望的结果,因此ORM可能会限制您的实现范围。正如我所提到的,它们充当中间件。您的数据库引擎可能支持一些功能,但在ORM中未实现。但是在这种情况下,您总是可以选择编写原始SQL查询来获得期望的结果。

我很喜欢我,由于上述优点奥姆斯。