실행 단위
모든 SQL statement 가 cursor 통해 실행. conn.execute(sql, params) 가 한 개 반환 (호출마다 fresh cursor). Row 읽기:
cursor.fetchone()— 다음 row tuple, 또는 None.cursor.fetchmany(n)— n row 까지 list of tuple.cursor.fetchall()— 남은 row 다 (주의: 거대할 수 있음).- Iteration —
for row in cursor:가 lazy stream; 큰 결과 set 의 idiomatic.
Tip: Iteration 기본. 백만 row query 의
fetchall() 이 백만 tuple 메모리 할당; iterator 는 한 번에 하나 stream.