繁体   English   中英

SQLAlchemy还是psycopg2?

[英]SQLAlchemy or psycopg2?

我正在写一个快速而又脏的脚本,需要与数据库(PG)进行交互。

该脚本是解决现有问题的务实,战术解决方案。 但是,我设想脚本会随着时间的推移逐渐演变成一个更“精致”的系统。 鉴于它目前正在快速组合(即我没有时间倾注大量的文档),我很想通过psycopg走快速而肮脏的路线。

psycopg2的优点(正如我目前所理解的)是:

  1. 用C语言编写,比sqlAlchemy(用Python编写)快吗?
  2. DBAPI上没有抽象层,因为只使用一个db和一个db(暗示 - >快)
  3. (现在),我不需要ORM,所以我可以直接执行我的SQL语句而无需学习新的ORM语法(即轻量级)

缺点:

  1. 我知道我会想要进一步的ORM
  2. psycopg2是(“过时”?) - 不知道它会保留多长时间

我对SqlAlchemy(慢/解释,臃肿,陡峭的学习曲线)的看法是否真实 - 无论如何,我可以使用sqlAlchemy以“粗略和准备”的方式使用psycopg - 即:

  1. 直接执行SQL语句,而不必乱用ORM层等。

这样做的任何例子都可以吗?

SQLAlchemy是一个ORM,psycopg2是一个数据库驱动程序。 这些是完全不同的东西:SQLAlchemy 生成 SQL语句,psycopg2将SQL语句发送到数据库。 SQLAlchemy依赖于psycopg2或其他数据库驱动程序与数据库进行通信!

作为一个相当复杂的软件层,SQLAlchemy确实增加了一些开销,但它也大大提高了开发速度,至少在你学习了库之后。 SQLAlchemy是一个优秀的库,它将教你整个ORM概念,但如果你不想生成SQL语句,那么你就不需要SQLAlchemy了。

要与数据库交谈,任何人都需要驱动程序。 如果您正在使用SQL Plus等客户端进行oracle,MysqlCLI for Mysql,那么它将直接运行查询,并且该客户端随附DBServer包。

使用java,c,python,C#等语言从外部进行通信...我们需要驱动程序来访问该数据库。 psycopg2是从python运行PostgreSQL查询的驱动程序。

SQLAlchemy是ORM,它与数据库驱动程序不同。 它将为您提供灵活性,因此您可以编写代码而无需任何特定于数据库的标准。 ORM为程序员提供数据库独立性。 如果在ORM中编写object.save ,它将检查哪个数据库与该对象相关联,它将根据后端数据库生成插入查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM