프로그래밍/Python

[Python 강의] 16강 - 데이터베이스 관리 및 연결

월횽 2024. 10. 21. 06:30
728x90
반응형
SMALL

안녕하세요! 그레이 해커 월횽입니다. 오늘은 Python을 활용한 데이터베이스 관리 및 연결에 대해 알아보겠습니다. Python에서는 다양한 데이터베이스에 접근하고 데이터를 관리할 수 있는 여러 도구를 제공합니다. 이 강의에서는 SQLite, MySQL, PostgreSQL과 같은 데이터베이스에 연결하고 데이터를 처리하는 방법을 배워보겠습니다.

 

 

1. 데이터베이스란?

데이터베이스는 데이터를 체계적으로 저장하고 관리하는 시스템입니다. 웹 애플리케이션, 분석 도구, 데이터 저장소 등 다양한 곳에서 활용됩니다. Python에서는 데이터베이스에 접근하여 데이터를 저장, 수정, 삭제하는 작업을 쉽게 할 수 있습니다.

 

 

2. SQLite: 가벼운 데이터베이스

SQLite는 Python에 기본으로 내장된 가벼운 파일 기반의 데이터베이스입니다. 별도의 서버가 필요 없기 때문에 소규모 프로젝트에 유용합니다.

 

SQLite 데이터베이스 연결

Python에서는 sqlite3 모듈을 사용하여 SQLite 데이터베이스에 쉽게 연결할 수 있습니다.

728x90
import sqlite3

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

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

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

# 데이터 삽입
cur.execute("INSERT INTO users (name, age) VALUES ('John', 30)")

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

# 데이터 조회
cur.execute("SELECT * FROM users")
print(cur.fetchall())

# 연결 종료
conn.close()

 

 

 

3. MySQL과 PostgreSQL: 대형 시스템용 데이터베이스

MySQL과 PostgreSQL은 대규모 애플리케이션에서 널리 사용되는 데이터베이스입니다. Python에서는 mysql-connector-python이나 psycopg2 라이브러리를 사용하여 각각의 데이터베이스에 연결할 수 있습니다.

 

MySQL 데이터베이스 연결

pip install mysql-connector-python
반응형
import mysql.connector

# MySQL에 연결
conn = mysql.connector.connect(
    host='localhost',
    user='root',
    password='password',
    database='test_db'
)

cur = conn.cursor()

# 테이블 생성
cur.execute('''CREATE TABLE IF NOT EXISTS employees (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), salary INT)''')

# 데이터 삽입
cur.execute("INSERT INTO employees (name, salary) VALUES (%s, %s)", ('Alice', 60000))

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

# 데이터 조회
cur.execute("SELECT * FROM employees")
print(cur.fetchall())

# 연결 종료
conn.close()

 

 

PostgreSQL 데이터베이스 연결

pip install psycopg2
SMALL
import psycopg2

# PostgreSQL에 연결
conn = psycopg2.connect(
    host="localhost",
    database="test_db",
    user="postgres",
    password="password"
)

cur = conn.cursor()

# 테이블 생성
cur.execute('''CREATE TABLE IF NOT EXISTS students (id SERIAL PRIMARY KEY, name VARCHAR(100), grade INT)''')

# 데이터 삽입
cur.execute("INSERT INTO students (name, grade) VALUES (%s, %s)", ('Bob', 85))

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

# 데이터 조회
cur.execute("SELECT * FROM students")
print(cur.fetchall())

# 연결 종료
conn.close()

 

 

 

4. SQLAlchemy: ORM(Object Relational Mapping) 사용하기

SQLAlchemy는 데이터베이스 작업을 객체 지향 방식으로 처리할 수 있게 해주는 Python의 ORM 도구입니다. 이를 사용하면 데이터베이스에 SQL 문을 직접 작성하지 않고 Python 객체로 데이터를 관리할 수 있습니다.

 

SQLAlchemy 설치

pip install sqlalchemy

 

SQLAlchemy를 이용한 데이터베이스 처리

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# SQLite 데이터베이스 연결
engine = create_engine('sqlite:///example.db')
Base = declarative_base()

# 테이블 정의
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

# 테이블 생성
Base.metadata.create_all(engine)

# 세션 생성
Session = sessionmaker(bind=engine)
session = Session()

# 데이터 삽입
new_user = User(name='Charlie', age=25)
session.add(new_user)
session.commit()

# 데이터 조회
users = session.query(User).all()
for user in users:
    print(user.name, user.age)

# 세션 종료
session.close()

 

 

 

5. 데이터베이스 관리 및 연결 정리

· SQLite: 파일 기반의 가벼운 데이터베이스로 소규모 프로젝트에 적합.
· MySQL/PostgreSQL: 대규모 시스템에 적합한 데이터베이스.
· SQLAlchemy: 객체 지향 방식으로 데이터베이스를 관리할 수 있는 ORM 도구.

 

다음 시간에는 Python을 활용한 병렬 처리 및 멀티스레딩에 대해 알아보겠습니다!

 

 

 

 

 

- 이전 수업 목록

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
LIST