2011-07-06 4 views
2

나는 파이썬 2.7과 SQLite3을 가진 프로젝트를 가지고있다.fetchone()이 튜플로 int 변수를 설정하고있다

SQLite3 데이터베이스 열에 정수 변수를 저장하려고 시도하고 나중에 SQLite 열 값으로 변수를 설정할 수 있습니다.

연결 상태가 좋고 열이 존재하며 "int"유형입니다.

나는 데이터를 끌어이 코드를 사용하고 다음 내가 전화 했어 "에"변수는 인수로 제공되는이 코드에 포함되어있는 데프가

Trailcrest.fish_score = c.execute("SELECT fish_score FROM roster WHERE agentnumber = ?;", (AN,)).fetchone() 

를 호출 할 때.

그러나 데이터를 쓰는 동안 Trailcrest.fish_score 변수를 보면 정수가 아닌 튜플로 기록되었습니다. 변수에는 원래 정수가 포함되어 있습니다.

무슨 일입니까? 어떻게 해결할 수 있습니까? (나는 약간의 캐스팅을해야한다고 생각하지만 확실하지는 않습니다.)

답변

6

fetchone()은 여전히 ​​행과 유사한 객체를 반환합니다.이 객체는 외로운 필드를 구문 분석해야하므로, 데이터를 꺼내야합니다.

row = c.execute("SELECT fish_score FROM roster WHERE agentnumber = ?;", (AN,)).fetchone() 
if row is not None: # or just "if row" 
    Trailcrest.fish_score = row[0] 
else: 
    pass # didn't get back a row 
+0

작동합니다! 고맙습니다. 이 코드를 사용하는 사람은 누구나 메모를 남기고, 코멘트가 아닌 "else :"에 넣거나 컴파일러가 당신을 화나게 할 것입니다. – CodeMouse92

+2

@Jason :'pass' 키워드가 그 목적을 위해 만들어졌습니다 (자리 표시 자). – bernie

관련 문제