无法通过Python(Mysql.Connector)创建临时表

无法通过Python(Mysql.Connector)创建临时表,python,mysql-python,mysql-connector,mysql-connect,mysql-connector-python,Python,Mysql Python,Mysql Connector,Mysql Connect,Mysql Connector Python,我有一个以下格式的查询 下降表X; 如果不存在,则创建临时表X从表中选择*; 从X中选择A、B、C 但是,如果我使用mysql连接器在Python中运行它。我收到以下消息,“没有要从中获取的结果集”。 我的理解是,它只执行第一个DROP表X;然后返回。 有没有其他方法可以实现这一点?。我也尝试过使用multi=True,但也不起作用。 提前感谢mysql。如果您试图在一个调用中运行多个语句以执行,除非设置了multi=true,否则connector将引发异常 但是,正如您所发现的,如果设置了m

我有一个以下格式的查询

下降表X; 如果不存在,则创建临时表X从表中选择*; 从X中选择A、B、C

但是,如果我使用mysql连接器在Python中运行它。我收到以下消息,“没有要从中获取的结果集”。 我的理解是,它只执行第一个DROP表X;然后返回。 有没有其他方法可以实现这一点?。我也尝试过使用multi=True,但也不起作用。
提前感谢

mysql。如果您试图在一个调用中运行多个语句以执行,除非设置了multi=true,否则connector将引发异常

但是,正如您所发现的,如果设置了multi=true,它似乎不会使用相同的会话,或者会对会话执行一些奇怪的操作,这会导致丢失您创建的任何临时表

因此,我使用的解决方案是在同一个游标/连接上分别执行每个游标/连接:

conn = mysql.connector.connect(...)
cursor = conn.cursor()
cursor.execute('DROP TABLE X')
cursor.execute('CREATE TEMPORARY TABLE IF NOT EXISTS X (SELECT * FROM TABLE);')
cursor.execute('SELECT A,B,C FROM X;')
data = cursor.fetchall()

如果试图在一个调用中运行多个语句以执行,则mysql.connector将引发异常,除非设置了multi=true

但是,正如您所发现的,如果设置了multi=true,它似乎不会使用相同的会话,或者会对会话执行一些奇怪的操作,这会导致丢失您创建的任何临时表

因此,我使用的解决方案是在同一个游标/连接上分别执行每个游标/连接:

conn = mysql.connector.connect(...)
cursor = conn.cursor()
cursor.execute('DROP TABLE X')
cursor.execute('CREATE TEMPORARY TABLE IF NOT EXISTS X (SELECT * FROM TABLE);')
cursor.execute('SELECT A,B,C FROM X;')
data = cursor.fetchall()