PYMYSQL“fetchone() is None”相当于 fetchall()?

当用户输入 ID 修改销售时,我需要控制空记录。


这里有一个技巧,如果我把cursor.fetchone()而不是cursor.fetchall(),条件是None验证该行是空的,并告诉用户输入另一个ID,但它似乎不适用于fetchall( )根本。


我必须使用 fetchall,否则我会开始遇到漂亮格式的问题。


consulta = "SELECT id, CAST(fecha AS CHAR), id_cliente, total FROM compra WHERE id = %s;"

                cursor.execute(consulta, (id))

                compra = cursor.fetchall()

                **if (compra is None):**

                    print("ID is not valid.\n")

                    exito = False

                    return

                else:

                    exito = True

                T.clear_rows()

                for x in compra:

                    T.add_row(x)

                clear()

                print(T)

提前致谢!


智慧大石
浏览 72回答 0
0回答

呼唤远方

Python DB API定义fetchall返回某种序列,无论结果中有多少行。如果未找到行,则fetchone返回空序列。如果您的特定库返回一个列表,您可以轻松检查该列表是否为空:Nonefetchallcompra = cursor.fetchall()if not compra:    print("ID is not valid")    return如果它返回某种其他类型的惰性迭代器,您可能无法在不尝试迭代它的情况下判断它是否为空。你可能需要类似的东西compra = cursor.fetchall()try:    first = next(compra)except StopIteration:    print("ID is not valid.")    returnT.clear_rows()T.add_row(first)for x in compra:    T.add_row(x)可能有一个更简单的解决方案,具体取决于是什么以及在确定是否为空之前T调用是否安全。T.clear_rows()compra
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python