DevKD
@DevKD
Учу React, тыкаю палкой Nest

Почему через psycopg2 не могу получить список таблиц в postgres?

Пишу запрос в DBeaver
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'
AND table_type = 'BASE TABLE';

и получаю список таблиц, а в python скрипте пустой массив.
Думала, что может в докере не к той базе подключила. Сделала проверку
SELECT current_database();
DBeaver и python скрипте вывели корректное имя базы данных

Обрабатываю результат запроса так:
# Подключение к базе данных
    conn = psycopg2.connect(
        dbname=os.getenv("DB_NAME"),
        user=os.getenv("DB_USERNAME"),
        password=os.getenv("DB_PASSWORD"),
        host=os.getenv("DB_HOST"),
        port=os.getenv("DB_PORT"),
    )
   sql = """
        SELECT table_name
        FROM information_schema.tables
        WHERE table_schema = 'public'
        AND table_type = 'BASE TABLE';
    """
    with conn:
        with conn.cursor() as cursor:
            cursor.execute(sql)
            # Получение результата и распечатка
            result = cursor.fetchall()
            print(len(result))
  • Вопрос задан
  • 374 просмотра
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Ну всё правильно. Запрос выполнен, но ты не получаешь строки ответа. Ты же не ожидаешь, что либа для БД будет сама по себе спамить строки в консоль при каждом запросе? =)
with conn:
    with conn.cursor() as cursor:
        for row in cursor.execute(sql):
            print(row)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы