PHpullh

PYTHON · 파일/IO

SQLite 연동

sqlite3으로 경량 데이터베이스를 사용합니다. 별도 설치 없이 Python에 내장되어 있습니다.

파일/IO중급sqlite3SQLite데이터베이스SQL

핵심 설명

sqlite3으로 경량 데이터베이스를 사용합니다. 별도 설치 없이 Python에 내장되어 있습니다.

Python code

import sqlite3

# 메모리 DB (테스트/데모용)
conn = sqlite3.connect(":memory:")
conn.row_factory = sqlite3.Row  # dict-like 접근

cursor = conn.cursor()

# 테이블 생성
cursor.execute("""
    CREATE TABLE users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        email TEXT UNIQUE,
        age INTEGER
    )
""")

# 데이터 삽입 (파라미터 바인딩)
users = [
    ("Alice", "alice@test.com", 30),
    ("Bob", "bob@test.com", 25),
    ("Carol", "carol@test.com", 35),
]
cursor.executemany(
    "INSERT INTO users (name, email, age) VALUES (?, ?, ?)",
    users
)
conn.commit()

# 조회
for row in cursor.execute("SELECT * FROM users WHERE age >= ?", (28,)):
    print(f"  {row['name']} ({row['age']}세) - {row['email']}")

# 집계
cursor.execute("SELECT AVG(age) as avg_age, COUNT(*) as cnt FROM users")
stats = cursor.fetchone()
print(f"평균 나이: {stats['avg_age']:.1f}, 총 {stats['cnt']}명")

# 컨텍스트 매니저로 안전하게
with conn:
    conn.execute("UPDATE users SET age = ? WHERE name = ?", (31, "Alice"))

conn.close()

학습 팁

row_factory = sqlite3.Row를 설정하면 컬럼명으로 값에 접근할 수 있습니다.

주의할 점

SQL 인젝션 방지를 위해 반드시 파라미터 바인딩(?)을 사용하세요. f-string으로 SQL을 조합하지 마세요.

자주 묻는 질문

SQLite 연동란 무엇인가요?

sqlite3 으로 경량 데이터베이스를 사용합니다. 별도 설치 없이 Python에 내장되어 있습니다.

SQLite 연동 학습 시 주의할 점은 무엇인가요?

SQL 인젝션 방지를 위해 반드시 파라미터 바인딩( ? )을 사용하세요. f-string으로 SQL을 조합하지 마세요.