2017-02-13 3 views
1

을 반환하는 첫 번째 항목을 가져 오기, 모듈은 쿼리의 실행 결과를 반환 대하여 fetchone이라는 기능이 있습니다 :이 튜플을 반환내가 kinterbasdb 모듈 함께 일하고 있어요 함수 값

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

를 : ("value1",), 그리고 첫 번째 항목에 액세스하고 싶지만 결국 [0]을 피하십시오. 이후로 많은 것을 말하지는 않습니다. 이것은 마법의 숫자입니다. 가능한가? 어쩌면 일부 기능이 생겼을 까?

value, _ = cursor.fetchone() 

을하지만이 반환 :

난과에 노력했다 ValueError: need more than 1 value to unpack를, 인덱스 1은 아무것도하지 않기 때문에. 와

+0

어떤 버전의 Python입니까? 'value, * _ = ... '가 작동합니까? 또한이 경우 마법 숫자로 0을 계산하지 않습니다. – jonrsharpe

답변

5

문제 :

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

은 여기 당신이 풀고 자하는 튜플의 두 가지 요소를 기대하지만, 튜플 는 하나 개의 요소이 포함되어 있다는 것입니다. 당신은 그러나 쉼표를 작성하여이 문제를 해결 할 수 있지만, 같은 어떤 변수 : 당신은 쉼표 ,를 작성해야

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

마음 : 그것을 생략는 튜플 압축을 해제하지것입니다. 튜플 _의 나머지 요소를 압축 해제합니다

value, *_ = cursor.fetchone() 

:

또는 경우에 튜플의 요소 수를 알 수없는 (그러나 0보다 큰)입니다

, 당신은 aterisk을 사용할 수 있습니다. 표현식에 요소가 하나 인 튜플이있는 경우 __ ==() (요소가없는 튜플)과 같습니다. 예를 들어 (1,4,2,5)의 압축을 풀면 value == 1_ == (4,2,5)이됩니다.

+1

답변 해 주셔서 감사합니다. 나는 그것을 배우고있다 :-) –

관련 문제