안녕하세요! 그레이 해커 월횽입니다. 오늘은 Python을 활용한 데이터베이스 관리 및 연결에 대해 알아보겠습니다. Python에서는 다양한 데이터베이스에 접근하고 데이터를 관리할 수 있는 여러 도구를 제공합니다. 이 강의에서는 SQLite, MySQL, PostgreSQL과 같은 데이터베이스에 연결하고 데이터를 처리하는 방법을 배워보겠습니다.
1. 데이터베이스란?
데이터베이스는 데이터를 체계적으로 저장하고 관리하는 시스템입니다. 웹 애플리케이션, 분석 도구, 데이터 저장소 등 다양한 곳에서 활용됩니다. Python에서는 데이터베이스에 접근하여 데이터를 저장, 수정, 삭제하는 작업을 쉽게 할 수 있습니다.
2. SQLite: 가벼운 데이터베이스
SQLite는 Python에 기본으로 내장된 가벼운 파일 기반의 데이터베이스입니다. 별도의 서버가 필요 없기 때문에 소규모 프로젝트에 유용합니다.
SQLite 데이터베이스 연결
Python에서는 sqlite3 모듈을 사용하여 SQLite 데이터베이스에 쉽게 연결할 수 있습니다.
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
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을 활용한 병렬 처리 및 멀티스레딩에 대해 알아보겠습니다!
- 이전 수업 목록
'프로그래밍 > Python' 카테고리의 다른 글
[Python 강의] 18강 - 네트워킹 프로그래밍 (0) | 2024.10.23 |
---|---|
[Python 강의] 17강 - 병렬 처리 및 멀티스레딩 (0) | 2024.10.22 |
[Python 강의] 15강 - 웹 스크래핑 기법 (0) | 2024.10.18 |
[Python 강의] 14강 - 다양한 데이터 분석 기법 (1) | 2024.10.17 |
[Python 강의] 13강 - 테스트와 디버깅 기법 (1) | 2024.10.16 |