본문 바로가기
Artificial Intelligence/60. Python

[PYTHON] SQLite3 완전 정복 : 기초부터 실전까지

by Papa Martino V 2025. 7. 24.
728x90

SQLite3 완전 정복 : 기초부터 실전까지
SQLite3 완전 정복

 

[PYTHON] SQLite3 완전 정복: 기초부터 실전까지

Python은 다양한 내장 모듈을 제공하여 개발자들이 빠르고 안정적으로 애플리케이션을 개발할 수 있도록 돕습니다. 그 중 SQLite3 모듈은 별도의 설치 없이 간단히 데이터베이스를 다룰 수 있게 해주는 강력한 도구입니다. 이 글에서는 SQLite3를 활용한 Python 기반 데이터베이스 프로그래밍의 기초부터 고급 사용법까지 실무 중심으로 체계적으로 설명합니다.

1. SQLite3란 무엇인가?

SQLite는 경량화된 파일 기반의 관계형 데이터베이스(RDBMS)입니다. 서버를 따로 구성할 필요 없이, 하나의 파일로 모든 데이터가 저장되어 관리됩니다. Python은 sqlite3라는 내장 모듈을 통해 이를 손쉽게 사용할 수 있습니다.

2. 왜 SQLite3를 사용하는가?

  • 별도의 설치 필요 없음 (Python 기본 내장)
  • 빠른 속도와 낮은 리소스 사용
  • 개발 초기 프로토타이핑에 최적
  • 다양한 플랫폼에서 일관되게 작동

3. SQLite3 기본 사용법


import sqlite3

# 데이터베이스 연결 (파일 생성됨)
conn = sqlite3.connect("example.db")
cursor = conn.cursor()

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

# 데이터 삽입
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("마르티노", 30))
conn.commit()

# 데이터 조회
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
    print(row)

# 연결 종료
conn.close()
    

4. 실무에서 유용한 고급 기능들

4.1 딕셔너리로 결과 받기


conn.row_factory = sqlite3.Row
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
for row in cursor.fetchall():
    print(dict(row))
    

4.2 트랜잭션 처리

여러 쿼리를 하나의 단위로 묶어 원자성(Atomicity)을 보장할 수 있습니다.


try:
    conn.execute("BEGIN")
    cursor.execute("UPDATE users SET age = age + 1")
    cursor.execute("DELETE FROM users WHERE age > 100")
    conn.commit()
except Exception as e:
    conn.rollback()
    print("에러 발생:", e)
    

4.3 인덱스 활용


CREATE INDEX idx_user_name ON users(name);
    

5. 사용 예시: 간단한 회원 관리 앱

Python CLI에서 SQLite3를 활용한 간단한 회원관리 시스템 예시입니다.


def create_user(conn, name, age):
    cursor = conn.cursor()
    cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", (name, age))
    conn.commit()

def list_users(conn):
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM users")
    return cursor.fetchall()
    

6. 주요 함수 요약

기능 함수/메서드 설명
DB 연결 sqlite3.connect() DB 파일에 연결하거나 새로 생성
커서 생성 conn.cursor() SQL 실행을 위한 객체 생성
SQL 실행 cursor.execute() INSERT, SELECT 등 SQL 실행
결과 조회 cursor.fetchall() SELECT 결과를 리스트로 반환
변경사항 저장 conn.commit() INSERT/UPDATE 수행 후 저장
DB 종료 conn.close() 모든 작업 종료 후 연결 해제

7. 파일 기반 DB 관리 시 주의사항

  • 동시성 문제: 다중 사용자 환경에서는 SQLite보단 PostgreSQL이 적합
  • 백업 주기적 수행: 파일이므로 손상 위험에 대비해야 함
  • 파일 권한 설정: 보안상 디렉토리 접근 제어 필요

8. 관련 자료 출처

9. 마무리

SQLite3는 Python과 찰떡궁합인 로컬 데이터 저장 솔루션입니다. 실무에서 API 개발, 간단한 데스크탑 앱, 데이터 분석 프로토타입 등 다양한 용도에 활용할 수 있으며, 배우기도 쉽습니다. 위 예제와 함께 직접 프로젝트에 적용해 보며 SQLite3의 강력함을 경험해 보시기 바랍니다.

© 2025 Python SQLite3 Guide. All rights reserved.

728x90