소개
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
테이블과 매핑되며, name
과 email
속성으로 데이터베이스의 컬럼과 매핑됩니다.
ORM을 사용하면 데이터베이스 테이블을 간단한 클래스로 표현할 수 있어 코드의 가독성을 높일 수 있습니다. 또한, 쿼리를 통해 데이터를 간편하게 가져올 수도 있습니다.
결론
SQLAlchemy는 Python에서 SQLite 데이터베이스와 상호작용하기 위한 강력한 도구입니다. SQLAlchemy를 사용하면 데이터베이스 연결, 쿼리 작성, ORM을 통한 객체 관계 매핑 등을 쉽게 처리할 수 있습니다. 모든 데이터베이스 관련 작업을 일관된 방식으로 처리하고 싶다면 SQLAlchemy를 고려해보세요.