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 책을 참조하였습니다.

댓글