Как я могу запустить несколько операторов SQL в запросе в Python? - PullRequest
0 голосов
/ 07 мая 2019

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

У меня есть требование миграции:

MIGRATIONS = {
        "test": ("-- apply", "-- revert", "does nothing")
        }

(первый элемент кортежа - это запрос «применить», второй - запрос «отменить», третий - читаемый человеком текст для страниц справки)

В настоящее время я использую SQLite, но в будущем хотел бы переключиться на другую БД. Поэтому я не могу использовать метод Connection.executescript, поскольку это «нестандартный ярлык» для «нестандартного удобного метода».

1 Ответ

0 голосов
/ 10 мая 2019

Поскольку вы реализуете миграцию, почему бы вам не определить функцию, которая делает это в терминах четко определенных функций:

def executemany(conn, statements: List[str]):
    with conn.cursor() as c:
        for statement in statements:
            c.execute(statement)
        conn.commit()

Другой вариант - использовать специальный инструмент миграции. Я неравнодушен к гусям .

...