10장: 데이터베이스
파이썬에서는 다양한 데이터베이스와 상호작용하기 위한 라이브러리를 제공합니다. 이 장에서는 SQLite를 사용하여 데이터베이스를 다루는 방법에 대해 알아보겠습니다. SQLite는 가벼운 관계형 데이터베이스로, 파일 기반의 데이터베이스를 쉽게 사용할 수 있습니다.
#### 10.1 SQLite 데이터베이스 연결
먼저, `sqlite3` 모듈을 사용하여 SQLite 데이터베이스에 연결하는 방법을 알아보겠습니다. 데이터베이스 파일이 존재하지 않으면 자동으로 생성됩니다.
```python
import sqlite3
# 데이터베이스 연결
conn = sqlite3.connect('example.db')
# 커서 객체 생성
cursor = conn.cursor()
```
#### 10.2 테이블 생성
SQL 명령어를 사용하여 데이터베이스에 테이블을 생성할 수 있습니다. `CREATE TABLE` 명령어를 사용하여 새로운 테이블을 생성합니다.
```python
# 테이블 생성
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
)
''')
# 변경사항 저장
conn.commit()
```
#### 10.3 데이터 삽입
`INSERT INTO` 명령어를 사용하여 테이블에 데이터를 삽입할 수 있습니다. 파이썬의 `execute` 메서드를 사용하여 SQL 명령어를 실행합니다.
```python
# 데이터 삽입
cursor.execute('''
INSERT INTO users (name, age)
VALUES (?, ?)
''', ('Alice', 30))
# 여러 데이터 삽입
users = [
('Bob', 25),
('Charlie', 35)
]
cursor.executemany('''
INSERT INTO users (name, age)
VALUES (?, ?)
''', users)
# 변경사항 저장
conn.commit()
```
#### 10.4 데이터 조회
`SELECT` 명령어를 사용하여 테이블에서 데이터를 조회할 수 있습니다. `fetchall` 메서드를 사용하여 조회한 모든 데이터를 가져올 수 있습니다.
```python
# 데이터 조회
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
print(row)
```
#### 10.5 데이터 업데이트
`UPDATE` 명령어를 사용하여 테이블의 데이터를 업데이트할 수 있습니다.
```python
# 데이터 업데이트
cursor.execute('''
UPDATE users
SET age = ?
WHERE name = ?
''', (31, 'Alice'))
# 변경사항 저장
conn.commit()
```
#### 10.6 데이터 삭제
`DELETE FROM` 명령어를 사용하여 테이블의 데이터를 삭제할 수 있습니다.
```python
# 데이터 삭제
cursor.execute('''
DELETE FROM users
WHERE name = ?
''', ('Alice',))
# 변경사항 저장
conn.commit()
```
#### 10.7 트랜잭션 관리
파이썬의 `sqlite3` 모듈은 자동으로 트랜잭션을 관리합니다. `commit` 메서드를 호출하여 변경사항을 저장하고, `rollback` 메서드를 호출하여 변경사항을 되돌릴 수 있습니다.
```python
try:
# 트랜잭션 시작
cursor.execute('''
INSERT INTO users (name, age)
VALUES (?, ?)
''', ('Dave', 40))
# 변경사항 저장
conn.commit()
except Exception as e:
# 변경사항 되돌리기
conn.rollback()
print(f"오류 발생: {e}")
```
#### 10.8 연결 닫기
모든 작업이 끝나면 데이터베이스 연결을 닫아야 합니다.
```python
# 커서와 연결 닫기
cursor.close()
conn.close()
```
#### 10.9 컨텍스트 매니저 사용
파이썬의 `with` 구문을 사용하여 데이터베이스 연결을 관리할 수 있습니다. 이를 통해 연결이 자동으로 닫히도록 할 수 있습니다.
```python
import sqlite3
# 컨텍스트 매니저 사용
with sqlite3.connect('example.db') as conn:
cursor = conn.cursor()
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
print(row)
```
이상으로, 파이썬에서 SQLite 데이터베이스를 사용하는 방법에 대해 알아보았습니다. 다음 장에서는 웹 스크래핑과 관련된 작업에 대해 더 자세히 알아보겠습니다. 질문이나 요청사항이 있으시면 댓글로 남겨주세요!
---
이 글의 내용은 GoalKicker.com의 Python Notes for Professionals 책을 참조하였습니다.
댓글
댓글 쓰기