1

我正在使用 kinterbasdb 模块,该模块有一个名为 fetchone 的函数,它返回查询执行的结果:

cursor.execute("....")
cursor.fetchone()

这将返回一个元组:("value1",),我想访问第一项,但[0]最终避免使用,因为没有太多说明,它是一个神奇的数字。可能吗?也许一些内置功能?

我试图与:

value, _ = cursor.fetchone()

但这正在返回: ValueError: need more than 1 value to unpack,因为索引 1 没有任何内容。

4

2 回答 2

6

问题在于:

value, _ = cursor.fetchone()
#      ^ a variable with identifier _

是它在这里需要您希望解包的元组中的两个元素,但元组只包含一个元素。但是,您可以通过写一个逗号来解决这个问题,但不能像这样的变量:

value, = cursor.fetchone()
#     ^ no variable

请注意,您必须编写逗号,:省略它不会解包元组。

或者如果元组中的元素数量未知(但大于零),您可以使用星号:

value, *_ = cursor.fetchone()

这将解包 tuple 中的剩余元素_。如果表达式有一个包含一个元素的元组,_则等于_ == ()(没有元素的元组)。例如(1,4,2,5),如果您解包,它将导致value == 1and _ == (4,2,5)

于 2017-02-13T13:57:22.473 回答
0

通过使用它的索引访问元素会更容易,希望它有所帮助,我用一个非常基本的例子解释了这一点:

def test_function():

return 1,3,4,5,6

#--- Getting function output using index ----#

print('',f()[0],' \n',f()[1],'\n',f()[2],' ..........')

结果:

 1  
 3 
 4  ..........
于 2019-05-08T09:51:04.293 回答