psycopg2 имеет результаты из-за недопустимого соединения - PullRequest
1 голос
/ 24 сентября 2019

Я использовал psycopg2 для подключения к своему локальному экземпляру postgres, но не осознавал, что никогда не устанавливал переменные env.Я решил сделать выборку в таблице 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',)]

1 Ответ

1 голос
/ 24 сентября 2019

Конечно, соединение действительно.Когда вы передаете пустые аргументы psycopg2.connect(), как вы это сделали, программа получает переменные среды Postgres , которые, по-видимому, настроены правильно.Обратите внимание, что это не так, если вы передаете строку DSN в функцию:

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

Per документация :

Документация PostgreSQL содержитполный список поддерживаемых параметров .Также обратите внимание, что те же параметры могут быть переданы в клиентскую библиотеку с помощью переменных среды .

...