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

时间:2018-08-06 17:56:31

标签: python mysql-python mysql-connector mysql-connect 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,但这也不起作用。 预先感谢

1 个答案:

答案 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()