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

该脚本是对现有问题的务实、战术性解决方案.然而,我设想,随着时间的推移,脚本将演变成一个更"精致"的系统.考虑到它目前正在非常迅速地组装起来(即,我没有时间翻阅大量文档),我很想使用psycopg走上快速而肮脏的道路.

psycopg2的优势(据我目前所知)在于:

  1. 用C写的,比sqlAlchemy(用Python写的)快吗?
  2. No abstraction layer over the DBAPI since works with one db and one db only (implication -> fast)
  3. (目前),我不需要ORM,所以我可以直接执行SQL语句,而无需学习新的ORM语法(即轻量级)

缺点:

  1. 我知道我想要一个更进一步的ORM
  2. psycopg2是("日期"?)-不知道它会持续多久

我对SqlAlchemy(缓慢/解读、臃肿、陡峭的学习曲线)的看法是真的吗?我是否可以以我想要使用psycopg的"粗略且准备就绪"的方式使用SqlAlchemy?即:

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

有这样做的例子吗?

推荐答案

SQLAlchemy是一个ORM,psycopg2是一个数据库驱动程序.这些是完全不同的事情:SQLAlchemy generates SQL语句和psycopg2将SQL语句发送到数据库.SQLAlchemy依赖psycopg2或其他数据库驱动程序与数据库通信!

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

Postgresql相关问答推荐

将real[]数组作为完整的浮点值从postquist返回

环境变量在Bash应用程序中没有出现

一列引用两个不同的表

是否从表中 Select 值?巴什

为什么 Postgres 中的 now() 和 now()::timestamp 对于 CET 和 CEST 时区如此错误?

如何获得一起满足数量要求的物品? (WHILE 循环还是 CTE?)postgresql

Postgres:一次插入多行时自定义upsert(存储过程?)?

如何使用 go-pg 包删除所有记录

为什么我使用 VBA 只能从 postgres 获得 10 行?

如何使用 ActiveRecord json 字段类型

如何将 postgres 数据库转换为 sqlite

冲突中的 Postgres 会更新复合主键

如何在构建时链接 docker 容器?

在 Windows 10 中执行时,Docker 容器关闭并给出data directory has wrong ownership错误

Rails:PG :: InsufficientPrivilege:错误:permission denied for relation schema_migrations

如何使用 WITH RECURSIVE 子句进行 Select

按任意时间间隔计算行数的最佳方法

PostgreSQL 9 在 Windows 上安装:Unable to write inside TEMP environment path.

学习 PL/pgSQL 的好资源?

如何在不丢失openproject数据的情况下将postgresql数据库从10升级到12