SQLAlchemy Неверный синтаксис рядом с 'GO' - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть файл sql с некоторыми предварительными настройками БД, которые я хотел бы выполнить с БД. Файл содержит SLQ, который должен выполняться в отдельных пакетах (разделенных оператором GO):

CREATE SCHEMA foo
GO
CREATE SEQUENCE [foo].[generateId]
 AS [INT]
 START WITH 61148
 INCREMENT BY 1
 MINVALUE -2147483648
 MAXVALUE 2147483647
 CACHE

В настоящее время я пытаюсь сделать это:

with open("setup.sql") as f:
    with self.session() as sess:
        sess.execute(f.read())

Однако я получаюошибка, сказав Incorrect syntax near 'GO'. Если бы я удалил создание схемы (и, следовательно, GO) из файла, а затем выполнил следующее, то все работает:

with open(sql_file) as f:
    with self.session() as sess:
        sess.execute("CREATE SCHEMA foo")
        sess.execute(f.read())

Я также пытался добавить возврат каретки к оригиналуSQL через:

with open(sql_file) as f:
    sql = f.read()
sql = sql.replace('\n', '\r\n')
with self.session() as sess:
    sess.execute(sql)

По-прежнему выдается ошибка Incorrect syntax near 'GO'.

РЕДАКТИРОВАТЬ: Я также попытался удалить GO и использовать точку с запятой. SQL в setup.sql выглядит следующим образом:

CREATE SCHEMA foo;
CREATE SEQUENCE [foo].[generateTsId]
 AS [INT]
 START WITH 61148
 INCREMENT BY 1
 MINVALUE -2147483648
 MAXVALUE 2147483647
 CACHE
;

Тогда я получаю Incorrect syntax near the keyword 'CREATE'. Я также заменяю '\ n' на '\ r \ n' из-за linux -> windows.

...