Python과 SQLite: 데이터베이스 기본 사용법

Python과 SQLite: 데이터베이스 기본 사용법


목차

  1. 서론
  2. SQLite란 무엇인가?
  3. Python에서 SQLite 사용하기
    1. SQLite 데이터베이스 연결
    2. 테이블 생성
    3. 데이터 삽입
    4. 데이터 조회
    5. 데이터 업데이트
    6. 데이터 삭제
  4. SQLite의 고급 기능
    1. 트랜잭션 관리
    2. 데이터베이스 백업
  5. 실습 예제: 간단한 연락처 관리 프로그램
  6. 마무리
  7. 추천 태그

1. 서론

SQLite는 경량의 관계형 데이터베이스 관리 시스템으로, 서버가 필요 없고 로컬 파일로 데이터를 관리할 수 있습니다. Python은 표준 라이브러리로 SQLite를 지원하여 데이터베이스 작업을 쉽게 수행할 수 있습니다. 이번 포스팅에서는 Python과 SQLite를 사용하여 데이터베이스를 생성하고 관리하는 기본 방법을 알아보겠습니다.


2. SQLite란 무엇인가?

SQLite는 로컬 파일 기반의 경량 관계형 데이터베이스 관리 시스템입니다. 설치가 필요 없고, 파일 하나로 데이터베이스를 관리할 수 있어 간편합니다. 또한, 서버가 필요 없기 때문에 임베디드 시스템이나 테스트 환경에서 많이 사용됩니다.


3. Python에서 SQLite 사용하기


3.1 SQLite 데이터베이스 연결

Python에서 SQLite 데이터베이스에 연결하려면 sqlite3 모듈을 사용합니다. 데이터베이스 파일이 존재하지 않으면 자동으로 생성됩니다.


import sqlite3

# 데이터베이스 연결
conn = sqlite3.connect('example.db')

# 커서 객체 생성
cur = conn.cursor()

3.2 테이블 생성

테이블을 생성하려면 SQL 문을 사용하여 데이터베이스에 명령을 실행합니다.


# 테이블 생성
cur.execute('''
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    age INTEGER,
    email TEXT UNIQUE
)
''')

# 변경사항 저장
conn.commit()

3.3 데이터 삽입

데이터를 삽입하려면 INSERT INTO 문을 사용합니다.


# 데이터 삽입
cur.execute('''
INSERT INTO users (name, age, email)
VALUES (?, ?, ?)
''', ('Alice', 30, 'alice@example.com'))

# 변경사항 저장
conn.commit()

3.4 데이터 조회

데이터를 조회하려면 SELECT 문을 사용합니다.


# 데이터 조회
cur.execute('SELECT * FROM users')

# 결과 가져오기
rows = cur.fetchall()
for row in rows:
    print(row)

3.5 데이터 업데이트

데이터를 업데이트하려면 UPDATE 문을 사용합니다.


# 데이터 업데이트
cur.execute('''
UPDATE users
SET age = ?
WHERE name = ?
''', (31, 'Alice'))

# 변경사항 저장
conn.commit()

3.6 데이터 삭제

데이터를 삭제하려면 DELETE FROM 문을 사용합니다.


# 데이터 삭제
cur.execute('''
DELETE FROM users
WHERE name = ?
''', ('Alice',))

# 변경사항 저장
conn.commit()

4. SQLite의 고급 기능


4.1 트랜잭션 관리

트랜잭션은 일련의 데이터베이스 연산을 하나의 작업 단위로 처리합니다. 트랜잭션을 사용하면 데이터 무결성을 보장할 수 있습니다.


try:
    # 트랜잭션 시작
    conn.execute('BEGIN TRANSACTION')

    # 여러 데이터베이스 연산 수행
    cur.execute('INSERT INTO users (name, age, email) VALUES (?, ?, ?)', ('Bob', 25, 'bob@example.com'))
    cur.execute('INSERT INTO users (name, age, email) VALUES (?, ?, ?)', ('Charlie', 35, 'charlie@example.com'))

    # 변경사항 저장
    conn.commit()
except sqlite3.Error as e:
    # 오류 발생 시 롤백
    conn.rollback()
    print(f"Error occurred: {e}")

4.2 데이터베이스 백업

SQLite는 데이터베이스 파일을 백업하는 기능을 제공합니다.


import shutil

# 데이터베이스 백업
shutil.copyfile('example.db', 'example_backup.db')

5. 실습 예제: 간단한 연락처 관리 프로그램

이제 SQLite를 사용하여 간단한 연락처 관리 프로그램을 작성해보겠습니다.


import sqlite3

# 데이터베이스 연결
conn = sqlite3.connect('contacts.db')
cur = conn.cursor()

# 테이블 생성
cur.execute('''
CREATE TABLE IF NOT EXISTS contacts (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    phone TEXT,
    email TEXT UNIQUE
)
''')
conn.commit()

# 연락처 추가 함수
def add_contact(name, phone, email):
    cur.execute('''
    INSERT INTO contacts (name, phone, email)
    VALUES (?, ?, ?)
    ''', (name, phone, email))
    conn.commit()

# 연락처 조회 함수
def get_contacts():
    cur.execute('SELECT * FROM contacts')
    return cur.fetchall()

# 연락처 업데이트 함수
def update_contact(contact_id, name, phone, email):
    cur.execute('''
    UPDATE contacts
    SET name = ?, phone = ?, email = ?
    WHERE id = ?
    ''', (name, phone, email, contact_id))
    conn.commit()

# 연락처 삭제 함수
def delete_contact(contact_id):
    cur.execute('DELETE FROM contacts WHERE id = ?', (contact_id,))
    conn.commit()

# 프로그램 실행 예제
add_contact('Alice', '010-1234-5678', 'alice@example.com')
add_contact('Bob', '010-8765-4321', 'bob@example.com')

contacts = get_contacts()
for contact in contacts:
    print(contact)

update_contact(1, 'Alice', '010-0000-0000', 'alice_new@example.com')

contacts = get_contacts()
for contact in contacts:
    print(contact)

delete_contact(2)

contacts = get_contacts()
for contact in contacts:
    print(contact)

# 데이터베이스 연결 종료
conn.close()

6. 마무리

이번 포스팅에서는 Python과 SQLite를 사용하여 데이터베이스를 생성하고 관리하는 기본 방법을 알아보았습니다. SQLite는 경량의 데이터베이스 관리 시스템으로, Python과의 통합이 용이하여 간단한 데이터베이스 작업을 수행하는 데 매우 유용합니다. 다양한 예제를 통해 SQLite의 기능을 익혀보시기 바랍니다.

다음 이전