[파이썬] SQLAlchemy와 SQLite 활용

소개

SQLAlchemy는 Python에서 사용할 수 있는 파워풀하고 유연한 SQL 툴킷입니다. 이 툴킷은 다양한 데이터베이스 엔진과 작업할 수 있도록 하며, 객체 관계 매핑(ORM)을 통해 데이터베이스 관리를 쉽게 만들어줍니다. 이 글에서는 SQLAlchemy를 사용하여 SQLite 데이터베이스와 상호작용하는 방법에 대해 알아보겠습니다.

SQLite 설정

SQLite는 경량 데이터베이스 엔진으로서 로컬 머신에서 손쉽게 사용할 수 있도록 설계되었습니다. 다음은 Python에서 SQLite 데이터베이스에 연결하기 위한 기본적인 설정입니다.

import sqlite3

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

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

# 테이블 생성
query = '''
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT,
    email TEXT
)
'''
cursor.execute(query)

# 데이터 삽입
query = "INSERT INTO users (name, email) VALUES (?, ?)"
cursor.execute(query, ('John Doe', 'john@example.com'))

# 커밋
conn.commit()

# 연결 종료
conn.close()

위의 코드에서는 sqlite3 모듈을 사용하여 SQLite 데이터베이스에 연결하고, 커서를 생성하여 데이터베이스 작업을 수행합니다. 테이블을 생성하고 데이터를 삽입한 후 커밋하여 변경사항을 반영합니다.

SQLAlchemy를 사용한 SQLite 작업

이제 SQLAlchemy를 사용하여 SQLite 데이터베이스와 상호작용하는 방법을 살펴보겠습니다.

먼저, SQLAlchemy를 설치합니다.

pip install sqlalchemy

그런 다음, 다음과 같이 SQLAlchemy를 사용하여 SQLite 데이터베이스와 연결할 수 있습니다.

from sqlalchemy import create_engine

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

# 연결된 데이터베이스를 사용하여 쿼리 수행
result = engine.execute("SELECT * FROM users")
for row in result:
    print(row)

SQLAlchemy를 사용하면 데이터베이스 연결 및 작업을 간단하게 처리할 수 있습니다. create_engine 함수를 사용하여 SQLite 데이터베이스에 연결하고, engine 객체를 사용하여 쿼리를 실행할 수 있습니다.

ORM 활용

SQLAlchemy를 통해 SQLite 데이터베이스와 상호작용할 때 가장 강력한 기능 중 하나는 ORM입니다. ORM을 사용하면 데이터베이스 테이블을 Python 클래스로 매핑하여 객체지향적인 방식으로 데이터베이스를 조작할 수 있습니다.

아래는 SQLAlchemy ORM을 사용하여 SQLite 데이터베이스와 상호작용하는 간단한 예입니다.

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

# Base 클래스 생성
Base = declarative_base()

# User 클래스 정의
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String)

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

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

# 데이터 쿼리
users = session.query(User).all()
for user in users:
    print(user.name, user.email)

위의 코드에서는 SQLAlchemy의 ORM을 사용하여 User 클래스를 정의합니다. User 클래스는 users 테이블과 매핑되며, nameemail 속성으로 데이터베이스의 컬럼과 매핑됩니다.

ORM을 사용하면 데이터베이스 테이블을 간단한 클래스로 표현할 수 있어 코드의 가독성을 높일 수 있습니다. 또한, 쿼리를 통해 데이터를 간편하게 가져올 수도 있습니다.

결론

SQLAlchemy는 Python에서 SQLite 데이터베이스와 상호작용하기 위한 강력한 도구입니다. SQLAlchemy를 사용하면 데이터베이스 연결, 쿼리 작성, ORM을 통한 객체 관계 매핑 등을 쉽게 처리할 수 있습니다. 모든 데이터베이스 관련 작업을 일관된 방식으로 처리하고 싶다면 SQLAlchemy를 고려해보세요.