我使用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/