You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL Connector执行带USE的多语句无返回,如何匹配GUI客户端行为?

解决MySQL Connector多语句执行无数据返回的问题

当使用multi=True执行多语句时,MySQL Connector的cursor.execute()不会直接返回结果,而是返回一个结果集迭代器。你需要主动遍历这个迭代器,才能获取每个语句的执行结果(尤其是SELECT类语句的数据)。GUI客户端会自动处理多语句的结果集并展示,但Connector需要手动处理。

正确的执行方式

# 执行多语句并获取迭代器
results = cursor.execute('USE my_db; SELECT * FROM my_table;', multi=True)

# 遍历每个结果集
for result in results:
    # 判断当前结果集是否包含返回数据(比如SELECT语句)
    if result.with_rows:
        # 获取数据(可根据需求用fetchall/fetchone/fetchmany)
        data = result.fetchall()
        print(data)

关键说明

  • USE my_db;是DDL语句,执行后无返回结果,result.with_rows会为False,无需处理。
  • 仅包含返回数据的语句(如SELECT)会触发result.with_rows=True,此时可调用fetch方法获取数据。
  • 若存在多个SELECT语句,遍历过程会依次获取每个SELECT对应的结果集。

内容的提问来源于stack exchange,提问作者Arcus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 11:27:01