문제상황:
실무에서 종종 사용되는 데이터베이스에서 데이터를 읽어오는 파이썬 코드에서 에러가 발생했습니다.
이 코드는 SQLite 데이터베이스에 연결하여 사용자 정보를 가져오는 역할을 합니다.
에러가 발생한 코드와 이에 대한 설명:
import sqlite3
def fetch_data(database, query):
conn = sqlite3.connect(database)
cursor = conn.cursor()
cursor.execute(query)
result = cursor.fetchone()
return result.something
data = fetch_data("example.db", "SELECT * FROM users WHERE id = 1")
print(data)
위 코드에서 fetch_data 함수는 데이터베이스 파일명과 SQL 쿼리를 인자로 받아, 해당 쿼리를 실행한 후 결과의 특정 속성을 반환합니다. 이 코드를 실행하면 다음과 같은 에러가 발생합니다.
에러로그 내용:
AttributeError: 'NoneType' object has no attribute 'something'
해결방법:
에러가 수정된 코드와 수정된 부분에 대한 주석:
import sqlite3
def fetch_data(database, query):
conn = sqlite3.connect(database)
cursor = conn.cursor()
cursor.execute(query)
result = cursor.fetchone()
if result: # 추가된 코드
return result.something
return None # 추가된 코드
data = fetch_data("example.db", "SELECT * FROM users WHERE id = 1")
print(data)
원인분석:
위 코드에서 발생한 에러는 fetchone() 함수가 None을 반환하면서 발생한 문제입니다. fetchone() 함수는 쿼리 결과에서 한 행을 가져옵니다. 그러나 결과가 없는 경우 None을 반환하게 됩니다.
이 경우, 우리가 찾고자 하는 사용자 데이터가 데이터베이스에 없어서 발생한 문제입니다. 따라서 결과가 None인 경우를 처리하는 코드를 추가하여 문제를 해결할 수 있습니다.
참고링크:
728x90