SQLAlchemy'GO'附近的语法不正确

时间:2019-11-08 13:13:15

标签: sql-server sqlalchemy ssms flask-sqlalchemy

我有一个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并使用分号。 setup.sql中的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'。由于Linux-> Windows,我还将'\ n'替换为'\ r \ n'。

0 个答案:

没有答案