query_formatter¶
- PGPackDumper.query_formatter(query)¶
- Параметры:
query (str) – SQL-запрос для форматирования
- Результат:
Отформатированный SQL-запрос или
Noneесли запрос пустой- Тип результата:
str | None
Форматирование и нормализация SQL-запросов для PostgreSQL/GreenPlum.
Описание:
Метод выполняет очистку и форматирование SQL-запросов с использованием библиотеки
sqlparse. Он удаляет комментарии, лишние пробелы и точки с запятой в конце запроса,
приводя запрос к стандартизированному виду.
Что делает метод:
Проверяет входные данные - возвращает
Noneдля пустых запросовУдаляет комментарии - убирает однострочные (
--) и многострочные (/* */) комментарииФорматирует SQL - приводит к стандартному форматированию
Удаляет лишние символы - убирает пробелы и точки с запятой в начале/конце
Возвращает чистый запрос - готовый к использованию в PostgreSQL/GreenPlum
Параметры:
Параметр |
Тип |
Описание |
|---|---|---|
|
|
SQL-запрос для форматирования. Может содержать комментарии и лишние пробелы. |
Возвращаемое значение:
str- отформатированный SQL-запрос без комментариев и лишних символовNone- если входной запрос пустой (None,"", или состоящий только из пробелов)
Примеры использования:
# Пример 1: Базовое форматирование запроса
from pgpack_dumper import PGPackDumper
dumper = PGPackDumper(connector)
raw_query = """
SELECT -- это комментарий
id,
name,
/* многострочный
комментарий */
age
FROM users
WHERE active = TRUE;
"""
formatted = dumper.query_formatter(raw_query)
print(formatted)
# Вывод:
# SELECT id,
# name,
# age
# FROM users
# WHERE active = TRUE
Преобразования, выполняемые методом:
Входной запрос |
Результат форматирования |
|---|---|
|
|
|
|
`` SELECT * FROM t WHERE x=1 ; `` |
|
|
|
|
|
Внутренняя работа метода:
Метод использует функцию sqlparse.format() со следующими параметрами:
# Эквивалент внутренней реализации
from sqlparse import format as sql_format
def query_formatter(query):
if not query:
return None
# Основные параметры форматирования:
formatted = sql_format(
sql=query,
strip_comments=True, # Удаление комментариев
reindent=True, # Автоматический отступ
keyword_case='upper', # Ключевые слова в верхнем регистре
use_space_around_operators=True, # Пробелы вокруг операторов
indent_width=2, # Ширина отступа
wrap_after=80 # Перенос строк после 80 символов
)
# Дополнительная очистка
return formatted.strip().strip(";")
Использование в других методах PGPackDumper:
Метод query_formatter используется внутренне в других методах для
обеспечения корректности SQL-запросов:
read_dump() - форматирование запросов для выборки данных
write_between() - нормализация SQL для источника данных
to_reader() - подготовка запросов для потокового чтения
См. также:
read_dump - Метод, использующий форматирование запросов для выборки
write_between - Использование SQL-запросов для переноса данных