TypeError:尝试使用 python 和 MySQL 运行 FOR 时,“NoneType”对象不可迭代

问题描述 投票:0回答:1

当我尝试从我在 Python 中执行的 CRUD 中执行选择函数时,出现此错误。我正在开发一个最初有 SQLite3 数据库的应用程序,出于一些原因我正在尝试迁移到 MySQL。事实证明,在 SQLite 中,应用程序运行得很好,现在我收到了有关我尝试导航的 FOR 的错误。

def select_list(self):

        self.list_cli.delete(*self.lista_cli.get_children())

        self.conecting_bd()

        list = self.cursor.execute("""SELECT cod, name_client, phone, city FROM clients

                                    ORDER BY name_client ASC; """)

        for i in list:

            self.list_cli.insert("", END, values=i)

        self.desconect_bd()

相同的代码在更改数据库之前工作得很好,我没有对 Python 代码进行任何具体更改,因此我无法找到解决方案,因为我真的看不到问题。在在这里提问之前我已经搜索过它,但这似乎是一个非常奇怪的错误,尽管 TypeError: 'NoneType' object is not iterable

当我在代码的 FOR 部分添加注释时,它会起作用,并且我能够在 tkinter 屏幕上显示所有客户端数据,就像电子表格一样。 但这不是我想要的。我需要 FOR 工作,以便我可以显示作为客户端数据的选择命令。

希望大家能够帮助我!

python mysql sqlite tkinter
1个回答
1
投票

对于

sqlite3
模块,
cursor.execute("SELECT ...")
返回光标对象。

但是,对于

mysql-connector-python
模块,无论有没有返回记录,
cursor.execute()
都会返回
None
。你需要检查你使用的MySQL模块的文档。

为了兼容性,您可以在执行 SELECT 语句后迭代游标对象:

self.execute("""SELECT ...""")

for i in self.cursor:
    self.list_Cli.insert("", END, values=i)
© www.soinside.com 2019 - 2024. All rights reserved.