【问题标题】:Can't create temporary tables through Python (Mysql.Connector)无法通过 Python (Mysql.Connector) 创建临时表
【发布时间】:2019-01-13 17:48:58
【问题描述】:
我有以下格式的查询,
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,但这也没有用。
提前致谢
【问题讨论】:
标签:
python
mysql-python
mysql-connector
mysql-connect
mysql-connector-python
【解决方案1】:
如果您尝试在一次调用execute() 中运行多个语句,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()