python

17편 Python 기초 문법: 데이터베이스와 SQLite

파이썬 티쳐 2024. 11. 21. 09:49

1. 데이터베이스 기초 개념

1.1 데이터베이스(Database)란 무엇인가

데이터베이스(Database)는 데이터를 구조화하여 체계적으로 저장하고 관리하는 시스템입니다. 이를 통해 데이터를 효율적으로 검색, 수정, 삭제할 수 있습니다.

1.2 SQL(Structured Query Language) 개념과 기본 문법

SQL은 데이터베이스에서 데이터를 조회, 삽입, 수정, 삭제하는 언어입니다. 주요 SQL 명령어는 다음과 같습니다:

  • SELECT: 데이터를 조회
  • INSERT: 데이터를 삽입
  • UPDATE: 데이터를 수정
  • DELETE: 데이터를 삭제

2. SQLite와 Python 연동

2.1 SQLite란 무엇인가

SQLite는 서버 기반이 아닌 파일 기반의 경량 데이터베이스 시스템입니다. Python 내장 모듈 sqlite3를 통해 쉽게 사용할 수 있습니다.

2.2 sqlite3 모듈을 사용한 데이터베이스 연결

import sqlite3

# 데이터베이스 연결 (파일이 없으면 새로 생성됨)
conn = sqlite3.connect("example.db")

2.3 테이블 생성과 데이터 삽입

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

# 테이블 생성
cursor.execute('''
CREATE TABLE IF NOT EXISTS contacts (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    phone TEXT NOT NULL
)
''')

# 데이터 삽입
cursor.execute("INSERT INTO contacts (name, phone) VALUES (?, ?)", ("Alice", "010-1234-5678"))

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

3. 간단한 데이터베이스 프로젝트

3.1 간단한 연락처 관리 프로그램 작성

import sqlite3

def create_table():
    conn = sqlite3.connect("contacts.db")
    cursor = conn.cursor()
    cursor.execute('''
    CREATE TABLE IF NOT EXISTS contacts (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        phone TEXT NOT NULL
    )
    ''')
    conn.commit()
    conn.close()

def add_contact(name, phone):
    conn = sqlite3.connect("contacts.db")
    cursor = conn.cursor()
    cursor.execute("INSERT INTO contacts (name, phone) VALUES (?, ?)", (name, phone))
    conn.commit()
    conn.close()

def search_contact(name):
    conn = sqlite3.connect("contacts.db")
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM contacts WHERE name = ?", (name,))
    rows = cursor.fetchall()
    conn.close()
    return rows

# 연락처 관리 기능 실행
create_table()
add_contact("Bob", "010-5678-1234")
result = search_contact("Bob")
print(result)  # 출력: [(1, 'Bob', '010-5678-1234')]

3.2 SQLite를 활용한 데이터베이스 조회 프로그램

def display_all_contacts():
    conn = sqlite3.connect("contacts.db")
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM contacts")
    rows = cursor.fetchall()
    for row in rows:
        print(f"ID: {row[0]}, Name: {row[1]}, Phone: {row[2]}")
    conn.close()

# 모든 연락처 표시
display_all_contacts()