Python:无法连接数据库

0 投票
1 回答
1808 浏览
提问于 2025-04-18 15:54

我在使用Python 3.4和psycopg2时遇到了一些问题。

我按照这个指南设置了一个基本的psycopg2连接,代码是这样的:

#!/usr/bin/python
import psycopg2
import sys
import pprint

def main():
    conn_string = "dbname='CIBTST' host='XX.XX.XXX.XX' port='XXXX' user='XXXXX' password='XXXX'"
    conn = psycopg2.connect(conn_string)
    cursor = conn.cursor()
    cursor.execute("My_select")
    records = cursor.fetchall()
    pprint.pprint(records)
if __name__ == "__main__":
    main()

但是我得到了这个错误信息:

Traceback (most recent call last):
File "C:\Users\pi24926\Desktop\Python\doSMS.py", line 14, in <module>
main()
File "C:\Users\pi24926\Desktop\Python\doSMS.py", line 8, in main
conn = psycopg2.connect(conn_string)
File "C:\Python34\lib\site-packages\psycopg2\__init__.py", line 164, in connect
conn = _connect(dsn, connection_factory=connection_factory, async=async)
psycopg2.OperationalError

当我在另一个客户端(Toad)中尝试同样的查询语句时,它似乎运行得很好。有没有什么建议?谢谢!

补充说明:问题的根源在于:端口。 如果我运行:

#!/usr/bin/python
import psycopg2
import sys
import pprint

def main():
    conn_string = "dbname='CIBTST' host='XX.XX.XXX.XX' user='XXXXX' password='XXXX'"
    conn = psycopg2.connect(conn_string)
    cursor = conn.cursor()
    cursor.execute("My_select")
    records = cursor.fetchall()
    pprint.pprint(records)
if __name__ == "__main__":
    main()

那么我得到:

Traceback (most recent call last):
File "C:\Users\pi24926\Desktop\Python\doSMS.py", line 14, in <module>
main()
File "C:\Users\pi24926\Desktop\Python\doSMS.py", line 8, in main
conn = psycopg2.connect(conn_string)
File "C:\Python34\lib\site-packages\psycopg2\__init__.py", line 164, in connect
conn = _connect(dsn, connection_factory=connection_factory, async=async)
psycopg2.OperationalError: could not connect to server: Connection timed out  (0x0000274C/10060)
Is the server running on host "XXXXXXX" and accepting
TCP/IP connections on port 5432?

出于某种原因,我只能在1522端口下连接。有没有什么想法?

1 个回答

0

问题出在数据库上...

因为这是一个Oracle数据库,所以我应该使用cx_Oracle,而不是psycopg2。

撰写回答