Postgres Python 查询导入 pg 与导入 psycopg2

Posted

技术标签:

【中文标题】Postgres Python 查询导入 pg 与导入 psycopg2【英文标题】:Postgres Python Query import pg vs import psycopg2 【发布时间】:2017-08-03 20:02:57 【问题描述】:

我正在编辑一个 python 脚本,我需要检查一个表是否存在。但是代码可以工作,因为我现在正在尝试检查表是否存在,所以我需要先了解发生了什么。

代码目前有:

import pg
con = pg.connect(...)

还有一堆调用:

con.query(...)

我在 SO:Checking if a postgresql table exists under python (and probably Psycopg2) 上找到了这个示例,但我不确定 psycopg2 是否与 pg 相同,而且我似乎在 pg 上找不到任何文档,所以我不知道是否 @ 987654328@ 可以做con.exucute(...) 类似于psycopg2 可以做的事情。

每当我搜索pg 时,我都会获得psycopg2 的文档。

有人知道两者的区别吗? 我可以将con.execute()con.cursor() 用于pg 吗?

【问题讨论】:

pg 很可能是对符合 DB-API 的 PyGreSQL 库的引用,psycopg2 也是如此,因此它们的操作应该相同——尽管通常您会使用 execute 方法游标对象而不是连接对象。 @rd_nielsen cursor 对象是否与 execute 一起行进并存储执行的最后一个值? execute()的结果可以通过cursor.fetchone()cursor.fetchall()的游标对象获取。完整的 DB-API 规范在这里:python.org/dev/peps/pep-0249。无论您使用哪个库,都可能具有一些附加功能;您还应该检查该文档。 【参考方案1】:

pg 指 PyGreSQL 驱动:

http://www.pygresql.org/

PyGreSQL 是一个与 PostgreSQL 数据库接口的 Python 模块。它嵌入了 PostgreSQL 查询库,以便从 Python 脚本或应用程序中轻松使用强大的 PostgreSQL 功能。

PyGreSQL 由两部分组成:pg 模块提供的“经典”PyGreSQL 接口和 pgdb 模块提供的较新的 DB-API 2.0 兼容接口。

【讨论】:

以上是关于Postgres Python 查询导入 pg 与导入 psycopg2的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SQL 使用特定于“pg”模块 Postgres 的“字符串插值”查询多条记录 [重复]

来自python的pg8000 postgres连接问题

导入不带角色的 postgres 数据库

如何从 Postgres 9.4 中转储大对象数据,然后将其导入 Postgres8.x?

PG(node-postgres)VS。续集

postgres如何删除会话