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

Python使用mysql.connector执行所有SQL查询均返回None结果如何解决

mysql.connector执行SQL返回None的问题原因与修复方案

产生原因

Python的mysql.connector库中,游标对象的execute()方法设计为无返回值,执行SQL后的查询结果会暂存在游标实例内部,不会直接作为execute()的返回值返回,因此直接赋值execute()的执行结果必然得到None,属于预期行为,不是代码运行错误。

修复方案

执行完execute()方法后,调用游标内置的结果抓取方法获取实际查询数据即可,常用的抓取方法有三种:

  • fetchone():单次获取结果集的下一行,返回单条数据的元组,无更多数据时返回None
  • fetchmany(size=N):单次获取结果集的下N行,返回包含N条数据元组的列表
  • fetchall():一次性获取结果集的全部数据,返回包含所有数据元组的列表

修复后的代码示例:

import mysql.connector

config = {
    'host':             'localhost',
    'user':             'root',
    'password':         '',
    'raise_on_warnings':True    
}
conn = mysql.connector.connect(**config)
csr = conn.cursor()
# 执行SQL,无需接收返回值
csr.execute('SHOW DATABASES')
# 调用fetchall方法获取全部查询结果
result = csr.fetchall()
print(result)

补充说明:如果执行的是增删改等写操作,不需要调用抓取方法,执行完成后调用conn.commit()提交事务即可;如果需要获取插入操作生成的自增主键ID,可以读取csr.lastrowid属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:45:02