关于python:SQLAlchemy或psycopg2?

SQLAlchemy or psycopg2?

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

该脚本是对现有问题的实用,战术解决方案。但是,我设想该脚本将随着时间的推移而演变成一个更加"完善"的系统。考虑到它目前正在快速整合的事实(即我没有时间倾注大量文档),我很想使用psycopg进行快速而肮脏的开发。

psycopg2的优点(据我目前所知)是:

  • 用C编写,比sqlAlchemy(用Python编写)快吗?
  • DBAPI上没有抽象层,因为只能使用一个db和一个db(隐含->快速)
  • (目前),我不需要ORM,因此我可以直接执行SQL语句,而无需学习新的ORM语法(即轻量级)
  • 缺点:

  • 我知道我将需要进一步的ORM
  • psycopg2是("日期"?)-不知道它将保留多长时间
  • 我对SqlAlchemy的理解(缓慢/解释,肿,陡峭的学习曲线)是否正确-是否可以以我想使用psycopg的"粗略和准备好"的方式使用sqlAlchemy?

  • 直接执行SQL语句,而无需弄乱ORM层等。
  • 有这样做的例子吗?


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

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


    要与数据库对话,任何人都需要驱动程序。如果您正在使用SQL Plus for oracle客户端,MysqlCLI for Mysql客户端,则它将直接运行查询,并且该客户端附带DBServer Pack。

    要从外部使用Java,C,Python,C#等任何语言进行通信,...需要该数据库的驱动程序。 psycopg2是用于从python运行PostgreSQL查询的驱动程序。

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