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

Ksh*_*j G 1 python mysql-connect mysql-connector mysql-python mysql-connector-python

我有以下格式的查询,

DROP TABLE X; CREATE TEMPORARY TABLE IF NOT EXISTS X (SELECT * FROM TABLE); SELECT A,B,C FROM X;

但是,如果我使用 mysql 连接器在 Python 中运行它。我收到以下消息,'No result set to fetch from'。我的理解是它只执行第一个DROP TABLE X;并返回。还有其他方法可以实现这一目标吗?我也尝试过使用multi=True,但也没有用。提前致谢

eva*_*n_b 5

如果您尝试在一次调用中运行多个语句,mysql.connector 将引发异常execute(),除非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()
Run Code Online (Sandbox Code Playgroud)