使用Python连接PostgreSQL

5 投票
1 回答
4677 浏览
提问于 2025-04-28 00:26

我正在尝试用Python连接PostgreSQL数据库,但遇到了很多问题。我的操作系统是Windows 7,使用的是PostgreSQL 9.3和Python 3.3以及3.4。

我首先尝试使用psycopg2来连接,使用了以下代码:

try:
    conn = psycopg2.connect("dbname='ravi' user='potsgres' host='localhost' password='***'")
except:
    print ("I am unable to connect to the database")

接着,我又尝试用pyodbc连接,使用了这段代码:

try:
    connection = pyodbc.connect("DRIVER={psqlOBDC};SERVER=localhost:5432;DATABASE=ravi;UID=postgres;PWD=***")
except:
    print("not working")

但是都没有成功连接。

我已经尝试了很多方法。我查看了环境变量,确保PostgreSQL和Python的路径都设置好了。我还尝试用pyodbc连接一个我已经创建的SQL Server数据库,结果没有问题。我进入了ODBC数据源管理器,测试了我安装的PostgreSQL ODBC驱动,测试结果显示连接成功。我不确定这是否相关,但我可以通过geoserver顺利连接到PostgreSQL数据库。我也不太清楚这是ODBC、JDBC还是其他类型的连接。此外,我最开始尝试用PHP建立连接,但我对PHP了解不多,所以我认为可能是我的代码有问题。

有没有人能帮我找出问题出在哪里?我想到了几个可能的方向,但不知道有没有办法详细查看是什么错误导致连接失败。另外,我尝试通过命令行连接数据库,但命令行不让我输入密码。

我找到了一些可能的解决方案,但要么我不太理解它们的意思,要么是针对Linux环境的,而我不知道在Windows上该怎么做。

在psycopg2中打开Postgres连接导致Python崩溃

使用pyodbc连接PostgreSQL

我刚开始学习编程,所以如果有任何可能的解决方案,请尽量简单易懂,假设我对电脑几乎一无所知。非常感谢任何帮助!

编辑:根据univerio的例子,当我尝试使用psycopg2时,出现了以下错误信息:SyntaxError: invalid syntax,但我看不出哪里出错了。

如果我尝试使用pyODBC,得到的错误是:('IM002', '[IM002] [Microsoft][ODBC Driver Manager] 数据源名称未找到且未指定默认驱动程序 (0) (SQLDriverConnect)')

我进入了ODBC数据源管理器,把SSL设置为“需要”和“允许”,但都没有帮助。此外,驱动程序的名称实际上是PostgreSQL35W,添加35W并没有改变错误信息。

暂无标签

1 个回答

0

psycopg2 接受的是关键字参数,而不是一个单独的字符串,正如你提到的另一个问题所说。只需要把双引号去掉就可以了。

撰写回答