我使用的是 VPN。 我可以使用 PSQL 成功连接到 Postgres 服务器
/opt/homebrew/bin/psql postgres://myuser:[email protected]:5432/postgres
然而,尽管到目前为止这一切都有效,但今天使用 Python/psycopg2 却出现了问题:
(我正在使用 Anaconda Spyder)
今天突然出现错误。到目前为止它一直在工作。 Python 连接器代码很简单:
config = load_config() # comes from database.ini file
print(config) # when I print it out, I can verify it is correct
conn = db_conn.connect(config)
cur = conn.cursor()
这是我的 iPython 控制台输出:
FATAL: no PostgreSQL user name specified in startup packet
Traceback (most recent call last):
File /opt/anaconda3/lib/python3.12/site-packages/spyder_kernels/py3compat.py:356 in compat_exec
exec(code, globals, locals)
File ~/python/export_query_to_csv_template.py:50
cur = conn.cursor()
AttributeError: 'NoneType' object has no attribute 'cursor'
Restarting kernel...
现在,如果我在 Spyder 环境之外的命令行上运行,我会得到以下信息:
12:01:31 wdavis $ python ./python/export_query_to_csv_template.py
FATAL: no PostgreSQL user name specified in startup packet
FATAL: no PostgreSQL user name specified in startup packet
Traceback (most recent call last):
File "/Users/wdavis/./python/export_query_to_csv_template.py", line 50, in <module>
cur = conn.cursor()
^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'cursor'
zsh: trace trap python ./python/export_query_to_csv_template.py
但是我再次看到我的配置字典是正确的,并且我确实指定了用户名。 这真是令人费解。
有什么想法吗? 我可以看到我的用户名已指定,但它说没有。 我应该重建一个包还是尝试不同的 Python 解释器? 对 PSQL 的工作感到困惑,但事实并非如此。
尝试建立这样的连接:
conn = psycopg2.connect(
user='test',
password='test',
host=192.168.x.x,
port='5432'
)
cur = conn.cursor()
如果一切正常,那么您的配置
database.ini
似乎已损坏。