Python SQLite와 연동하기
SQLite는 경량화된 관계형 데이터베이스 관리 시스템(RDBMS)으로, 소규모 데이터 저장 및 관리에 적합합니다. Python은 SQLite와 기본적으로 호환되며, 내장된 sqlite3
모듈을 통해 데이터베이스를 쉽게 제어할 수 있습니다. 이번 포스팅에서는 Python을 사용해 SQLite 데이터베이스를 생성하고, 데이터를 삽입, 조회, 수정, 삭제하는 방법을 다룹니다.
1. SQLite와 Python 연동의 장점
- 경량성과 독립성: SQLite는 별도의 서버가 필요 없이 파일 기반으로 작동합니다.
- Python 표준 라이브러리 포함: 추가 설치 없이 Python만으로 사용 가능합니다.
- 빠른 프로토타이핑: SQLite는 개발 초기 데이터베이스 구조를 테스트하는 데 유용합니다.
2. SQLite 시작하기
2.1. 데이터베이스 연결
Python에서 SQLite를 사용하려면 sqlite3
모듈을 import하여 데이터베이스 파일에 연결합니다. 데이터베이스 파일이 존재하지 않을 경우, 새 파일이 생성됩니다.
import sqlite3
# 데이터베이스 연결
connection = sqlite3.connect("example.db")
print("데이터베이스에 연결되었습니다.")
# 연결 종료
connection.close()
print("데이터베이스 연결이 종료되었습니다.")
2.2. 데이터베이스 테이블 생성
데이터를 저장할 테이블을 생성하기 위해 SQL의 CREATE TABLE
문을 사용합니다.
import sqlite3
# 데이터베이스 연결
connection = sqlite3.connect("example.db")
cursor = connection.cursor()
# 테이블 생성
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
email TEXT UNIQUE
)
''')
print("테이블이 성공적으로 생성되었습니다.")
# 변경 사항 저장 및 연결 종료
connection.commit()
connection.close()
3. 데이터 삽입
INSERT INTO
문을 사용하여 데이터를 삽입합니다. Python에서는 변수와 SQL 문을 결합하기 위해 ?
플레이스홀더를 사용합니다.
import sqlite3
# 데이터베이스 연결
connection = sqlite3.connect("example.db")
cursor = connection.cursor()
# 데이터 삽입
cursor.execute('''
INSERT INTO users (name, age, email)
VALUES (?, ?, ?)
''', ("Alice", 25, "alice@example.com"))
print("데이터가 성공적으로 삽입되었습니다.")
# 변경 사항 저장 및 연결 종료
connection.commit()
connection.close()
4. 데이터 조회
SELECT
문을 사용하여 데이터를 조회합니다. 데이터를 조회한 후 반복문을 사용해 결과를 출력할 수 있습니다.
import sqlite3
# 데이터베이스 연결
connection = sqlite3.connect("example.db")
cursor = connection.cursor()
# 데이터 조회
cursor.execute('''
SELECT * FROM users
''')
rows = cursor.fetchall()
print("사용자 데이터:")
for row in rows:
print(row)
# 연결 종료
connection.close()
5. 데이터 수정
UPDATE
문을 사용하여 특정 조건에 맞는 데이터를 수정합니다.
import sqlite3
# 데이터베이스 연결
connection = sqlite3.connect("example.db")
cursor = connection.cursor()
# 데이터 수정
cursor.execute('''
UPDATE users
SET age = ?
WHERE name = ?
''', (30, "Alice"))
print("데이터가 성공적으로 수정되었습니다.")
# 변경 사항 저장 및 연결 종료
connection.commit()
connection.close()
6. 데이터 삭제
DELETE
문을 사용하여 특정 조건에 맞는 데이터를 삭제합니다.
import sqlite3
# 데이터베이스 연결
connection = sqlite3.connect("example.db")
cursor = connection.cursor()
# 데이터 삭제
cursor.execute('''
DELETE FROM users
WHERE name = ?
''', ("Alice",))
print("데이터가 성공적으로 삭제되었습니다.")
# 변경 사항 저장 및 연결 종료
connection.commit()
connection.close()
7. 예외 처리
SQLite 작업 중 예외가 발생할 수 있으므로 이를 처리하는 방법도 중요합니다. try-except
구문을 사용해 예외 상황을 관리할 수 있습니다.
import sqlite3
try:
# 데이터베이스 연결
connection = sqlite3.connect("example.db")
cursor = connection.cursor()
# 예제 SQL 실행
cursor.execute('''
INSERT INTO users (name, age, email)
VALUES (?, ?, ?)
''', ("Bob", 28, "bob@example.com"))
# 변경 사항 저장
connection.commit()
print("데이터 삽입 성공")
except sqlite3.Error as e:
print("SQLite 오류 발생:", e)
finally:
# 연결 종료
if connection:
connection.close()
8. SQLite 고급 기능
SQLite는 기본적인 데이터 저장뿐 아니라 다음과 같은 고급 기능도 지원합니다:
- 트랜잭션 관리: 여러 작업을 하나의 트랜잭션으로 묶어 원자성을 보장.
- 인덱스: 검색 성능 향상을 위해 컬럼에 인덱스를 설정.
- 뷰: 복잡한 쿼리를 간단하게 표현.
# 트랜잭션 예제
try:
connection = sqlite3.connect("example.db")
cursor = connection.cursor()
# 트랜잭션 시작
cursor.execute("BEGIN TRANSACTION;")
cursor.execute("INSERT INTO users (name, age, email) VALUES (?, ?, ?);", ("Charlie", 35, "charlie@example.com"))
cursor.execute("UPDATE users SET age = ? WHERE name = ?;", (36, "Charlie"))
# 트랜잭션 커밋
connection.commit()
print("트랜잭션 성공")
except sqlite3.Error as e:
connection.rollback()
print("트랜잭션 오류 발생:", e)
finally:
connection.close()
결론
SQLite는 간단한 설정으로 강력한 기능을 제공하며, Python과의 연동은 매우 쉽습니다. 이번 포스팅에서는 SQLite 데이터베이스 생성부터 데이터 조작, 고급 기능 활용까지 살펴보았습니다. 이를 통해 여러분의 Python 프로젝트에 데이터 저장 및 관리 기능을 손쉽게 통합할 수 있길 바랍니다.
'Python 고급' 카테고리의 다른 글
Python MySQL과 PostgreSQL 연동 방법 (0) | 2025.01.08 |
---|---|
Python SQLAlchemy를 이용한 ORM 사용 (0) | 2025.01.07 |
Python WebSockets를 이용한 실시간 통신 (0) | 2025.01.05 |
Python REST API 요청 처리와 응답 분석 (0) | 2025.01.04 |
Python 비동기 네트워크 통신 asyncio (0) | 2025.01.03 |