메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Python sqlite 사용법

데브카페

Python에서 sqlite를 이용한 기본 SQL 예제

  • sqlite3* 모듈을 이용하여 데이터베이스에 대해 SELECT, INSERT, UPDATE, DELETE를 수행하는 기본 예제

1. 데이터베이스 연결 및 테이블 생성

import sqlite3

# sample.db라는 데이터베이스 파일에 연결(없으면 생성됨)
conn = sqlite3.connect('sample.db')
cursor = conn.cursor()

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

2. 데이터 삽입 (INSERT)

# 한 명의 사용자 데이터 삽입
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("홍길동", 30))
conn.commit()

3. 데이터 조회 (SELECT)

# users 테이블 전체 조회
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
    print(row)  # (id, name, age)

4. 데이터 수정 (UPDATE)

# id가 1인 사용자의 나이를 35로 수정
cursor.execute("UPDATE users SET age = ? WHERE id = ?", (35, 1))
conn.commit()

5. 데이터 삭제 (DELETE)

# id가 1인 사용자 삭제
cursor.execute("DELETE FROM users WHERE id = ?", (1,))
conn.commit()

6. 연결 종료

cursor.close()
conn.close()


함수로 구현

import sqlite3

def execute_query(query, params=()):
    conn = sqlite3.connect('sample.db')
    cursor = conn.cursor()
    cursor.execute(query, params)
    conn.commit()
    cursor.close()
    conn.close()

def fetch_all(query, params=()):
    conn = sqlite3.connect('sample.db')
    cursor = conn.cursor()
    cursor.execute(query, params)
    rows = cursor.fetchall()
    cursor.close()
    conn.close()
    return rows

# 사용 예시
execute_query('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)')
execute_query('INSERT INTO users (name, age) VALUES (?, ?)', ('이순신', 44))
users = fetch_all('SELECT * FROM users')
print(users)

클래스로 구현

import sqlite3

class UserDB:
    def __init__(self, db_file='sample.db'):
        self.db_file = db_file
        self._create_table()
        
    def _create_table(self):
        with sqlite3.connect(self.db_file) as conn:
            conn.execute('''
                CREATE TABLE IF NOT EXISTS users (
                    id INTEGER PRIMARY KEY AUTOINCREMENT,
                    name TEXT,
                    age INTEGER
                )
            ''')
            
    def insert_user(self, name, age):
        with sqlite3.connect(self.db_file) as conn:
            conn.execute('INSERT INTO users (name, age) VALUES (?, ?)', (name, age))
            
    def fetch_all(self):
        with sqlite3.connect(self.db_file) as conn:
            cursor = conn.execute('SELECT * FROM users')
            return cursor.fetchall()
    
    def update_user(self, user_id, new_age):
        with sqlite3.connect(self.db_file) as conn:
            conn.execute('UPDATE users SET age=? WHERE id=?', (new_age, user_id))
            
    def delete_user(self, user_id):
        with sqlite3.connect(self.db_file) as conn:
            conn.execute('DELETE FROM users WHERE id=?', (user_id,))

# 사용 예시
db = UserDB()
db.insert_user('홍길동', 25)
db.update_user(1, 30)
users = db.fetch_all()
print(users)
db.delete_user(1)


요약

  • sqlite3는 Python 표준 라이브러리로, 별도 설치 없이 바로 사용할 수 있습니다.
  • 데이터 삽입, 조회, 수정, 삭제는 SQL문으로 수행합니다.
  • 커밋(commit)과 연결 종료(close)를 꼭 확인해야 합니다.

참고

Comments