Получить максимальное и минимальное значение с помощью psycopg2

avatar
Ryag1
1 июля 2021 в 15:45
122
0
0

Я пытаюсь получить максимальное и минимальное значение одного столбца между определенными датами. Хотя я думаю, что запрос правильный, я получаю None.

Для подключения к базе данных я использую psycopg2.

Это запрос, который я хочу использовать:

querySentence = """
            SELECT MIN (t."NOMBRE_CAMPO") , MAX(t."NOMBRE_CAMPO")
                FROM {} t 
                JOIN "TABLA_B" tb
                    on t."NOMBRE_CAMPO" = tb."NOMBRE_CAMPO"
                WHERE  tb."Fecha" < %s AND tb."Fecha" >= %s;
                """

А вот как я его использую:

cur.execute(
                sql.SQL(querySentence)
                .format(sql.Identifier(table)),
                [minDate, minDate])
result = cur.fetchone()

Для проверки запроса я использую следующий код:

print(cur.mogrify(sql.SQL(querySentence)
                .format(sql.Identifier(table)),
                [maxDate , minDate]))

, который возвращает действительное предложение SQL:

SELECT MIN (t."NOMBRE_CAMPO") , MAX(t."NOMBRE_CAMPO")
              FROM "TABLA" t 
              JOIN "TABLA_B" tb
                  on t."NOMBRE_CAMPO" = tb."NOMBRE_CAMPO"
              WHERE  tb."Fecha" < '2021-01-01'::date AND tb."Fecha" >= '2020-12-01'::date;

Я попробовал это SQL-предложение непосредственно в базе данных и получил нужный результат, тогда как в своем коде я получил следующее значение для результата: (None, None)

Источник
Adrian Klaver
1 июля 2021 в 16:25
1

Скорее всего, вы не подключаетесь к той же базе данных в коде Python, что и при запуске вручную.

Ответы (0)