问题描述
我正在使用kinterbasdb模块,该模块具有称为fetchone的此函数,该函数返回查询执行的结果:
cursor.execute("....")
cursor.fetchone()
这将返回一个元组:( ("value1",)
,我想访问第一项,但最后避免了[0]
,因为并不能说明太多,所以这是一个神奇的数字。
可能吗?
也许一些内置功能?
我试图与:
value, _ = cursor.fetchone()
但这又返回了: ValueError: need more than 1 value to unpack
,因为索引1没有任何内容。
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)
。
2楼
通过使用其索引访问元素会更容易,希望对您有所帮助,我使用一个非常基本的示例对此进行了解释:
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 ..........