컬럼을 숫자로 꺼내는 거 그만해
sqlite3는 기본적으로 row를 tuple로 돌려줘. 그래서 컬럼을 숫자로 꺼내게 되는데, 잘 깨지고 읽기도 나쁘고 SELECT 순서만 바뀌어도 무너져. 고치는 데는 한 줄이면 돼.
conn.row_factory = sqlite3.Row이제 row가 sqlite3.Row가 돼. 인덱스로도 컬럼명으로도 꺼낼 수 있고 순회 순서도 안정적이야. dict은 아니지만 dict(row)로 깔끔하게 바꿀 수 있어. JSON으로 내보낼 때 편하지.
Tip: production 코드에서는 모든 connection에
row_factory = sqlite3.Row를 걸어. 실행 시간에 얹히는 부담은 무시해도 되는 수준이고, 읽기 좋아지는 건 어마어마하고, '컬럼 하나 추가했더니 인덱스가 밀렸다' 부류의 버그가 통째로 사라져.