Как в python библиотеке psycopg2 посмотреть запрос?

В библиотеке psycopg2 для работы с PostgreSQL в Python нет прямого способа просмотра запросов, выполняемых приложением. Однако, можно воспользоваться некоторыми методами для отладки и записи выполненных запросов.

Для начала, можно включить режим журналирования в psycopg2, который позволит отслеживать отправляемые запросы и получаемые результаты. Для этого можно установить уровень журналирования в значение psycopg2.extensions.ISOLATION_LEVEL_DEBUG, как показано ниже:

import psycopg2
from psycopg2.extensions import ISOLATION_LEVEL_DEBUG

# Установить уровень журналирования в DEBUG
psycopg2.extensions.set_isolation_level(ISOLATION_LEVEL_DEBUG)

# Ваш код для выполнения запросов

После установки уровня журналирования, psycopg2 будет выводить в консоль все отправленные и полученные запросы, что позволит вам просматривать и анализировать их.

Более продвинутым методом для просмотра запросов, особенно при работе с ORM (объектно-реляционное отображение) или другими сложными системами, может быть использование инструментов для анализа баз данных, таких как pg_stat_statements. Этот модуль PostgreSQL позволяет отслеживать статистику выполненных запросов, включая текст и время выполнения.

Чтобы включить и настроить pg_stat_statements, необходимо выполнить следующие шаги:

1. Убедитесь, что расширение pg_stat_statements установлено и активировано на сервере PostgreSQL. Если расширение не установлено, выполните следующую команду:

CREATE EXTENSION pg_stat_statements;

2. Отредактируйте файл конфигурации postgresql.conf (обычно располагается в /etc/postgresql/{version}/{cluster}/postgresql.conf). Зайдите в этот файл и найдите или добавьте следующие строки:

shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 1000
pg_stat_statements.track = all

3. Перезагрузите сервер PostgreSQL для применения изменений в конфигурации.

4. Теперь можно отслеживать запросы через методы psycopg2:

import psycopg2

# Подключение к базе данных
connection = psycopg2.connect(database="mydatabase", user="myuser", password="mypassword", host="myhost", port="myport")

# Создание курсора
cursor = connection.cursor()

# Включение расширения pg_stat_statements
cursor.execute("CREATE EXTENSION IF NOT EXISTS pg_stat_statements")

# Включение отслеживания запросов
cursor.execute("SET pg_stat_statements.track = all")

# Ваш код для выполнения запросов

# Выключение отслеживания запросов
cursor.execute("SET pg_stat_statements.track = none")

# Закрытие курсора и соединения
cursor.close()
connection.close()

Выполняя этот код, можно будет воспользоваться следующими запросами для анализа выполненных запросов:

-- Вывести список выполненных запросов, отсортированных по общему времени выполнения
SELECT * FROM pg_stat_statements ORDER BY total_time DESC;

-- Вывести текст выполненных запросов
SELECT query FROM pg_stat_statements;

Таким образом, методы просмотра запросов в библиотеке psycopg2 в Python могут быть достаточно разнообразными, начиная от простого вывода в консоль, и заканчивая использованием функционала PostgreSQL для отслеживания и анализа выполненных запросов.