Python 이 아니라 C 에서 루프
executemany 가 SQL statement + parameter tuple iterable 받음. 드라이버가 C 에서 루프, prepared statement 재사용. Bulk insert 면 Python for 루프의 row 마다 execute 보다 극적으로 빠름 — single transaction 과 자연스럽게 짝.
3 가지 룰:
- >= 100 row write 면 항상.
- Transaction (
with conn:) 으로 감싸. - 매우 큰 batch 는 1k–10k row 로 chunk — 메모리/락 시간 sane 유지.
Tip: executemany + transaction 이 보통 'insert 느낌 느림' 과 'insert 느낌 공짜' 의 차이. SQLite 느리다 보고의 가장 흔한 원인 = transaction 빠짐.