【发布时间】:2014-08-04 11:14:38
【问题描述】:
带有 psycopg2 的 Python 3.4
我使用this guide 设置了一个基本的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 下连接。有什么想法吗?
【问题讨论】:
-
什么是完整的、未经编辑的错误?应该不仅仅是
psycopg2.OperationalError。此外,如果您需要帮助,您确实需要显示所有相关信息。断言“我的 SELECT 是 100% 正确”是浪费时间 - 如果您确定这一点,您就不会在这里寻求帮助。您需要清楚地显示代码示例中被编辑/编辑的任何部分,并解释原因......或者最好不要一开始就这样做。 -
当与您正在运行的确切 psycopg2 版本相结合时,这 确实 会提供更多信息。它是什么?显示
import psycopg2的输出,然后显示psycopg2.__version__。 -
是的,刚刚做到了 :) 我不确定它是否添加了任何东西。问题一定是 - 对我来说 - 有联系,所以我写了 select 是正确的(例如使用 Toad 返回我想要的)。
-
回溯消息的其余部分在哪里?通常,回溯提供的信息比
psycopg2.OperationalError多一点,例如当数据库不存在时,您可能会看到:psycopg2.OperationalError: FATAL: database "ada9kd1j069f4k" does not exist -
@Craig Ringer:来自link的psycopg2-2.5.3。抱歉,但不确定“显示导入 psycopg2 的输出”是什么意思。
标签: python database postgresql psycopg2