Python/Python Flask

Flask-SQLAlchemy 소개 및 사용법

임베디드 친구 2025. 9. 2. 20:01
728x90
반응형

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)

사용 방법

  1. 초기화:

     flask db init
  2. 마이그레이션 생성:

     flask db migrate -m "Initial migration."
  3. 마이그레이션 적용:

     flask db upgrade

결론

Flask-SQLAlchemy는 Flask 애플리케이션에서 데이터베이스를 효과적으로 관리할 수 있도록 돕는 강력한 도구입니다. 위에서 살펴본 기본적인 사용법을 바탕으로 프로젝트에서 효율적으로 데이터를 관리해 보세요. Flask-Migrate와 함께 사용하면 데이터베이스 스키마 관리도 더욱 쉬워집니다.

반응형