db (sqlite3)의 행에서 데이터를 간단하게 실행하는 동안 문제가 있습니다. DB 입력에는 4 개의 필드가 있으므로 한 번 입력하면 저장됩니다. 하지만 여기에 내 문제가 있는데, 4 행 모두를 실행하면 필드 중 하나가 채워지지 않으면 오류가 발생합니다.db에서 결과를 실행하는 동안 인덱스가 범위를 벗어납니다.
데이터베이스는 코드를 실행할 수있어 그 :
def ids(self):
con = lite.connect('foo.db')
with con:
cur = con.cursor()
cur.execute("SELECT Id FROM foo")
while True:
ids = cur.fetchall()
if ids == None:
continue
return ids
그리고 4 행, 내 출력 코드가 있기 때문에 :
print ''.join(ids[0]) + ',' + ''.join(ids[1]) + ',' + ''.join(ids[2])
+ ',' + ''.join(ids[3])
그래서 제 질문은 기존 행에이 없을 때 예외를 만드는 방법입니다 아무것도 보이지 않고 실제로 존재하는 것을 그대로 두십시오. 나는 if ids[0] is not None: #do something
을 시도했다. 그러나 그것은 나의 코드를 정말로 느리게 할 것이다. 그리고 그것은 내가 추측하는 비 pyononic 한 길이다. 그 일을하는 더 좋은 방법이 있습니까? 어떤 도움을 주시면 감사하겠습니다.
다른 코드와 관련하여 '출력 코드'는 어디에 있습니까? 바로 아래에? – Hoopdady
출력 코드가 그보다 낮지는 않습니다. 그래도 상관 없니? 함수로서의 ID는 출력 아래에 있지만 중요한 경우 변경할 수 있습니다. – maikati
왜 'while true'입니까? 'fetchall' 호출을 다시 시도 할 필요는 없습니다. –