我正在使用 kinterbasdb 模块,该模块有一个名为 fetchone 的函数,它返回查询执行的结果:
cursor.execute("....")
cursor.fetchone()
这将返回一个元组:("value1",),我想访问第一项,但最后要避免使用 [0],因为没有不用多说,这是一个神奇的数字。是否可以?也许有一些内置功能?
我正在尝试:
value, _ = cursor.fetchone()
但这会返回:ValueError: need more than 1 value to unpack,因为索引 1 没有任何内容。
请您参考如下方法:
问题在于:
value, _ = cursor.fetchone()
# ^ a variable with identifier _
是不是此处期望您要解包的元组中有两个元素,但该元组仅包含一个元素。但是,您可以通过写一个逗号来解决这个问题,但不要像这样的变量:
value, = cursor.fetchone()
# ^ no variable
注意您必须写逗号,:省略它不会解压元组。
或者如果元组中的元素数量未知(但大于零),您可以使用星号:
value, *_ = cursor.fetchone()
这将解压元组 _ 中的剩余元素。如果表达式有一个只有一个元素的元组,_ 将等于 _ == ()(没有元素的元组)。例如,如果您解压 (1,4,2,5),它将导致 value == 1 和 _ == (4,2, 5)。
