Python使用mysql.connector执行所有SQL查询均返回None结果如何解决
mysql.connector执行SQL返回None的问题原因与修复方案
产生原因
Python的mysql.connector库中,游标对象的execute()方法设计为无返回值,执行SQL后的查询结果会暂存在游标实例内部,不会直接作为execute()的返回值返回,因此直接赋值execute()的执行结果必然得到None,属于预期行为,不是代码运行错误。
修复方案
执行完execute()方法后,调用游标内置的结果抓取方法获取实际查询数据即可,常用的抓取方法有三种:
fetchone():单次获取结果集的下一行,返回单条数据的元组,无更多数据时返回Nonefetchmany(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
相关产品推荐
相关产品推荐

