다른 명령
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)