我需要连接到旧的PostGreSQL数据库(版本7.3),我在XP机器上使用Python 3.2。 py-postgresql包似乎合适,但它似乎只使用3.0版本中实现的3.0协议。我想使用Python连接到这个数据库,但是当我尝试时,我收到了一个意外的EOF错误,我相信这是使用更新协议的包的结果。
我可以使用pgAdminIII程序连接到数据库就好了。有什么想法吗?
答案 0 :(得分:6)
不幸的是,py-postgresql和psycopg2都只支持v3协议。
我认为您唯一的选择是使用Postgres ODBC驱动程序,并使用pyODBC或mxODBC连接到它。 pyodbc的Python 3.x端口从他们的主项目页面链接。
答案 1 :(得分:3)
尝试PyGreSQL:
PyGreSQL是一个Python模块 PostgreSQL数据库的接口。 它嵌入了PostgreSQL查询库 允许轻松使用功能强大 PostgreSQL来自Python的功能 脚本。
PyGreSQL 4.0当前版本需要 PostgreSQL 7.2和Python 2.3或 上方。
修改强>
我对PostgreSQL 7.3进行了一些测试(在Debian Squeeze上从source编译),我发现它运行良好。我只更改了postgresql.conf中的一个属性,以使本地连接在Python下运行良好:
unix_socket_directory = '/var/run/postgresql'
之后使用python-pygresql包(版本4.0.2):
import pg
con1 = pg.connect('postgres', None, 5440, None, None, 'postgres', None)
con1.query('SELECT version()')
version
--------------------------------------------------------------------------------
PostgreSQL 7.3.21 on i686-pc-linux-gnu, compiled by GCC gcc (Debian 4.4.5-8) 4.4
(1 row)
con1.query('SELECT width, height FROM box')
width|height
-----+------
10 |15
18 |25
(2 rows)