Python:无法连接数据库
我在使用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。