我使用psycopg2连接到本地postgres实例,但没有意识到我从未设置env vars。我决定对sys表(information_schema.tables)进行一次选择,以检查是否已连接,并返回结果。我困惑了很长一段时间试图找出为什么我没有得到想要的结果。
究竟是什么在幕后导致了这一点,为什么psycopg2不干脆出错,说这是一个无效的连接?

import psycopg2


conn = psycopg2.connect(
                host=None,
                port=None,
                dbname=None,
                user=None,
                password=None,
            )

cur = conn.cursor()

cur.execute("""SELECT table_name
FROM information_schema.tables
limit 3 """)

print(cur.fetchall())

结果:
[('pg_statistic',),('pg_foreign_table',),('pg_authid',)]

最佳答案

当然,这种联系是有效的。当您像您所做的那样将空参数传递给psycopg2.connect()时,程序将得到Postgres environment variables这显然是正确设置的。请注意,在将DSN字符串传递给函数时,这不是真的:

conn = psycopg2.connect("host=None") # this defines an invalid connection

根据the documentation
PostgreSQL文档包含supported parameters的完整列表。还要注意,可以使用environment variables将相同的参数传递给客户机库。

关于python - psycopg2的连接无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58070544/

10-15 21:29