【问题标题】: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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多