Flask-SQLAlchemy 소개 및 사용법
Flask-SQLAlchemy란?
Flask-SQLAlchemy는 Flask 애플리케이션에서 관계형 데이터베이스와 상호작용하기 위해 SQLAlchemy를 쉽게 사용할 수 있도록 도와주는 확장 라이브러리입니다. SQLAlchemy는 파이썬에서 가장 널리 사용되는 ORM(Object Relational Mapper) 중 하나로, SQL을 작성하지 않고 객체 지향적으로 데이터베이스를 조작할 수 있게 해줍니다.
Flask-SQLAlchemy는 다음과 같은 기능을 제공합니다:
- 데이터베이스 연결 관리
- ORM 기능 제공
- 쿼리 작성 및 실행 지원
- 마이그레이션과 같은 데이터베이스 관리 기능과 통합
설치 방법
Flask-SQLAlchemy를 설치하려면 다음 명령어를 실행하세요:
pip install flask-sqlalchemy
기본 설정
Flask-SQLAlchemy를 사용하려면 먼저 Flask 애플리케이션에 확장을 설정해야 합니다. 간단한 설정 예제를 통해 이를 살펴보겠습니다.
기본 예제
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
# Flask 애플리케이션 생성
app = Flask(__name__)
# 데이터베이스 URI 설정
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# SQLAlchemy 객체 생성
db = SQLAlchemy(app)
# 모델 정의
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), nullable=False, unique=True)
email = db.Column(db.String(120), nullable=False, unique=True)
def __repr__(self):
return f'<User {self.username}>'
# 데이터베이스 초기화
with app.app_context():
db.create_all()
if __name__ == '__main__':
app.run(debug=True)
위 코드에서 중요한 설정은 SQLALCHEMY_DATABASE_URI
입니다. 이 URI는 사용하려는 데이터베이스와의 연결 정보를 나타냅니다. 위 예제에서는 SQLite 데이터베이스를 사용했습니다.
주요 기능
데이터베이스 모델 정의
Flask-SQLAlchemy에서는 클래스 정의를 통해 데이터베이스 모델을 만듭니다. 각 클래스는 데이터베이스의 테이블에 매핑되며, 클래스의 속성은 테이블의 컬럼에 매핑됩니다.
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(200), nullable=False)
content = db.Column(db.Text, nullable=False)
author_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
def __repr__(self):
return f'<Post {self.title}>'
위 예제에서 Post
클래스는 게시물 정보를 저장하는 테이블을 나타냅니다. author_id
필드는 외래 키를 설정하여 다른 테이블과 관계를 정의합니다.
데이터 삽입
데이터를 데이터베이스에 추가하려면 모델 객체를 생성하고 세션에 추가한 뒤 커밋합니다.
new_user = User(username='testuser', email='test@example.com')
db.session.add(new_user)
db.session.commit()
데이터 조회
Flask-SQLAlchemy는 데이터를 쉽게 조회할 수 있도록 쿼리 인터페이스를 제공합니다.
# 모든 사용자 조회
users = User.query.all()
# 특정 사용자 조회
user = User.query.filter_by(username='testuser').first()
# 사용자 ID로 조회
user_by_id = User.query.get(1)
데이터 수정
데이터를 수정하려면 조회한 객체의 속성을 변경한 뒤 세션을 커밋하면 됩니다.
user = User.query.filter_by(username='testuser').first()
user.email = 'newemail@example.com'
db.session.commit()
데이터 삭제
데이터를 삭제하려면 세션에서 객체를 삭제하고 커밋합니다.
user = User.query.filter_by(username='testuser').first()
db.session.delete(user)
db.session.commit()
마이그레이션 도구 사용
Flask-SQLAlchemy와 함께 Flask-Migrate를 사용하면 데이터베이스의 스키마를 쉽게 관리할 수 있습니다. Flask-Migrate는 Alembic을 기반으로 데이터베이스 마이그레이션을 제공합니다.
설치
pip install flask-migrate
설정
from flask_migrate import Migrate
migrate = Migrate(app, db)
사용 방법
초기화:
flask db init
마이그레이션 생성:
flask db migrate -m "Initial migration."
마이그레이션 적용:
flask db upgrade
결론
Flask-SQLAlchemy는 Flask 애플리케이션에서 데이터베이스를 효과적으로 관리할 수 있도록 돕는 강력한 도구입니다. 위에서 살펴본 기본적인 사용법을 바탕으로 프로젝트에서 효율적으로 데이터를 관리해 보세요. Flask-Migrate와 함께 사용하면 데이터베이스 스키마 관리도 더욱 쉬워집니다.
'Python > Python Flask' 카테고리의 다른 글
Flask와 폼 처리 기법: Flask-WTF 사용하기 (0) | 2025.09.04 |
---|---|
Flask 데이터베이스 마이그레이션 관리 (0) | 2025.09.03 |
Flask Jinja2 템플릿 상속으로 템플릿 구조화하기 (0) | 2025.08.31 |
Flask Jinja2 템플릿: 변수 및 필터 사용법 (0) | 2025.08.30 |
Flask Jinja2 템플릿 기본 사용법 (0) | 2025.08.29 |