我有以下格式的查询
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
,但这也不起作用。
预先感谢
答案 0 :(得分:0)
execute()
的调用中运行多个语句,除非设置了multi=true
,否则mysql.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()