Python의 sqlite3 모듈과 SQLite
데이터베이스와 테이블 생성, INSERT/SELECT/UPDATE, 매개변수화 쿼리, 연결 관리를 학습합니다.
Python의 sqlite3 모듈과 SQLite은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
AI에 데이터베이스가 필요한 이유
데이터가 커지거나 프로젝트의 여러 부분에서 같은 레코드가 필요해지기 전까지는 평면 파일도 사용할 수 있습니다. 데이터베이스는 빠른 질의, 구조화된 스키마, 안전한 동시 접근을 제공합니다.
SQLite는 설정이 필요 없는 파일 기반 데이터베이스로, sqlite3 모듈을 통해 Python에 내장되어 있습니다. AI 실험과 소규모 프로젝트에 적합합니다.
sqlite3.connect로 연결하기
sqlite3.connect는 데이터베이스 파일을 열거나 생성하고 연결을 반환합니다. 임시 메모리 내 데이터베이스에는 :memory:를 사용합니다.
import sqlite3
conn = sqlite3.connect("ml.db") # creates ml.db if missing
print(conn)커서와 cursor.execute
연결에서 가져온 커서를 통해 SQL을 실행합니다. cursor.execute(sql)는 문을 데이터베이스로 전송합니다.
import sqlite3
conn = sqlite3.connect("ml.db")
cur = conn.cursor()
cur.execute("SELECT sqlite_version()")
print(cur.fetchone())CREATE TABLE IF NOT EXISTS
스키마를 사용해 표를 정의합니다. IF NOT EXISTS를 사용하면 이 문을 반복해서 실행해도 안전합니다. 표가 이미 있어도 오류가 발생하지 않습니다.
cur.execute("""
CREATE TABLE IF NOT EXISTS experiments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
accuracy REAL,
created_at TEXT
)
""")INSERT와 자리 표시자
절대로 문자열 서식 지정으로 SQL을 만들지 마십시오. SQL 삽입 공격의 원인이 되고 따옴표가 포함된 값에서 문제가 발생합니다. ? 자리 표시자를 사용하고 값을 튜플로 전달하십시오.
cur.execute(
"INSERT INTO experiments (name, accuracy, created_at) VALUES (?, ?, ?)",
("baseline", 0.82, "2026-05-29"),
)executemany로 여러 행 삽입하기
executemany는 한 번의 효율적인 호출로 튜플 목록을 삽입합니다. execute를 반복해서 호출하는 것보다 훨씬 빠릅니다.
rows = [
("rf", 0.88, "2026-05-29"),
("xgb", 0.91, "2026-05-29"),
]
cur.executemany(
"INSERT INTO experiments (name, accuracy, created_at) VALUES (?, ?, ?)",
rows,
)conn.commit()으로 변경 사항 저장하기
쓰기 작업은 트랜잭션 내부에서 수행되며 conn.commit()을 호출하기 전까지 영구적으로 저장되지 않습니다. 이 호출을 잊는 것은 초보자에게 가장 흔한 오류입니다. 연결을 닫으면 데이터가 아무런 알림 없이 사라집니다.
conn.commit() # persist all pending INSERT/UPDATE/DELETEfetchall 및 fetchone으로 조회하기
SELECT 이후에 결과를 가져옵니다.
fetchone()— 다음 한 행fetchall()— 남은 모든 행을 튜플 목록으로 가져오기- 대규모 결과에서는 커서를 직접 순회하기
cur.execute("SELECT name, accuracy FROM experiments")
for row in cur.fetchall():
print(row) # ("baseline", 0.82) ...필터링과 정렬
SQL이 복잡한 작업을 처리합니다. WHERE로 필터링하고, ORDER BY로 정렬하며, LIMIT으로 개수를 제한합니다. 질의 값에도 자리 표시자를 사용하십시오.
cur.execute(
"SELECT name, accuracy FROM experiments WHERE accuracy > ? ORDER BY accuracy DESC LIMIT 3",
(0.85,),
)
print(cur.fetchall())이름으로 접근하기 위한 행 팩토리
기본적으로 행은 튜플입니다. conn.row_factory = sqlite3.Row를 설정하면 열에 이름으로 접근할 수 있어 훨씬 읽기 쉽습니다.
import sqlite3
conn = sqlite3.connect("ml.db")
conn.row_factory = sqlite3.Row
cur = conn.cursor()
cur.execute("SELECT * FROM experiments")
row = cur.fetchone()
print(row["name"], row["accuracy"])안전성을 위한 컨텍스트 관리자
연결에 with를 사용하면 성공 시 자동으로 커밋하고 오류 발생 시 롤백합니다. closing과 함께 사용하면 정리 작업이 확실히 수행됩니다.
import sqlite3
from contextlib import closing
with closing(sqlite3.connect("ml.db")) as conn:
with conn: # auto commit/rollback
conn.execute(
"INSERT INTO experiments (name, accuracy) VALUES (?, ?)",
("svm", 0.79),
)빠른 확인: 쓰기 작업의 영속화
여러 INSERT 문을 실행한 다음 연결을 닫았지만, 다음에 확인했을 때 데이터가 사라졌습니다.
복습: sqlite3을 사용한 SQLite
이제 Python에서 실제 데이터베이스를 사용할 수 있습니다.
sqlite3.connect와cursor- 안전한 스키마를 위한
CREATE TABLE IF NOT EXISTS ?자리 표시자와executemany를 사용한INSERT- 쓰기 작업을 영구 저장하는
conn.commit() fetchone/fetchall,WHERE/ORDER BY/LIMIT- 깔끔하고 안전한 코드를 위한
sqlite3.Row와 컨텍스트 관리자
다음 단계에서는 pandas와 SQL을 연결합니다.
자주 묻는 질문
“Python의 sqlite3 모듈과 SQLite” 강의는 무료인가요?
네 — “Python의 sqlite3 모듈과 SQLite” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“Python의 sqlite3 모듈과 SQLite”에서 뭘 배우나요?
데이터베이스와 테이블 생성, INSERT/SELECT/UPDATE, 매개변수화 쿼리, 연결 관리를 학습합니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“Python의 sqlite3 모듈과 SQLite” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Python의 sqlite3 모듈과 SQLite
- Pandas와 SQL 통합
- 머신러닝 결과 저장 및 조회
- 벡터 데이터베이스 입문