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

Python MySQL迁移后遇TypeError: 'NoneType'对象不可迭代问题求助

解决SQLite迁移MySQL后查询结果遍历报错的问题

问题核心是SQLite与MySQL的Python驱动对查询结果的处理逻辑存在差异:

  • SQLite的游标执行execute()后,自身就是可迭代的结果集,直接遍历就能获取每行数据
  • 但MySQL的Python驱动(如mysql-connector-python、PyMySQL)中,execute()仅完成查询执行,不会直接返回可迭代结果,必须主动调用fetch方法获取数据

修改代码即可解决问题,调整查询结果的获取方式:

def select_list(self):
    self.list_cli.delete(*self.lista_cli.get_children())
    self.conecting_bd()

    # 执行查询语句
    self.cursor.execute("""SELECT cod, name_client, phone, city FROM clients
                        ORDER BY name_client ASC; """)
    # 获取所有查询结果
    results = self.cursor.fetchall()

    for i in results:
        self.list_cli.insert("", END, values=i)

    self.desconect_bd()

补充说明

  • fetchall()会一次性获取所有查询结果,返回由元组组成的列表,格式和SQLite中直接遍历游标得到的结果完全一致
  • 若查询数据量极大,可改用fetchmany(size=N)分批获取数据,避免一次性加载过多数据占用内存

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:16:02