chunk_query¶
- chunk_query(query)¶
- Параметры:
query (str | None) – SQL-запрос для разделения
- Результат:
Кортеж из двух списков запросов
- Тип результата:
tuple[list[str], list[str]]
Разделяет мультизапрос на части: до и после SELECT/WITH операций.
Описание:
Функция разбивает SQL-запрос, содержащий несколько операторов, на две части:
- first_part - запросы, выполняемые до основной операции
- second_part - запросы, выполняемые после основной операции
Разделение происходит по точкам с запятым, с учетом строковых литералов.
Пример:
query = "CREATE TABLE t; SELECT * FROM t; DROP TABLE t"
first, second = chunk_query(query)
# first: ["CREATE TABLE t"]
# second: ["DROP TABLE t"] (SELECT не включается)
Логика работы:
Разделяет запрос по
;, игнорируя точки с запятой внутри кавычекИщет первую операцию
SELECTилиWITHВсе до нее - в
first_partВсе после нее - в
second_partСама операция
SELECT/WITHне включается ни в одну из частей
Примечание:
Используется в декораторе @multiquery.