当我尝试从我在 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 工作,以便我可以显示作为客户端数据的选择命令。
希望大家能够帮助我!
对于
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)