Mysql 使用sqlalchemy同时执行多个sql语句

Mysql 使用sqlalchemy同时执行多个sql语句,mysql,python-3.x,sqlalchemy,execute,pymysql,Mysql,Python 3.x,Sqlalchemy,Execute,Pymysql,我可以使用sqlalchemy逐个执行MySQL语句 这个很好用。我希望所有三个mysql语句都在一个execute命令中运行: sql = text(""" use dbname; truncate table table_name; alter table table_name auto_increment=1; """) result = link.execute(sql) 错误消息返回: 您的SQL语法有错误 在sqlalchemy中是否无法批处理多个SQL语句 如何在create_e

我可以使用sqlalchemy逐个执行MySQL语句

这个很好用。我希望所有三个mysql语句都在一个execute命令中运行:

sql = text("""
use dbname;
truncate table table_name;
alter table table_name auto_increment=1;
""")
result = link.execute(sql)
错误消息返回:

您的SQL语法有错误

在sqlalchemy中是否无法批处理多个SQL语句


如何在create_engine语句中添加
client_flag=client.MULTI_语句呢?

我不久前也遇到了同样的问题,它是在驱动程序级别(
pymysql
),你需要在
create_engine
调用中添加标志
client_flag=client.MULTI_语句
,查看维护人员友好的回答,根据,您可以添加
client\u flag=client.MULTI\u语句,如下所示:

from pymysql.constants import CLIENT
from sqlalchemy import create_engine

...

create_engine(
    f"mysql+pymysql://root:{ipass}@{mysql_ip}:3306/?charset=utf8",
    connect_args={"client_flag": CLIENT.MULTI_STATEMENTS}
)

...

问题是把它放在哪里
from pymysql.constants import CLIENT
from sqlalchemy import create_engine

...

create_engine(
    f"mysql+pymysql://root:{ipass}@{mysql_ip}:3306/?charset=utf8",
    connect_args={"client_flag": CLIENT.MULTI_STATEMENTS}
)

...