다른 명령
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)를 꼭 확인해야 합니다.
참고
- [Python sqlite3 공식 문서](https://docs.python.org/ko/3/library/sqlite3.html)