Files
python-examples/doc/39_03_model.md
2025-01-23 11:02:27 +09:00

2.5 KiB

SQLAlchemy :Flask에서 데이터베이스 연결하기

Flask는 자체적으로 데이터베이스를 관리하는 기능은 제공하지 않지만, SQLAlchemy와 같은 ORM(Object-Relational Mapper) 라이브러리를 사용하여 다양한 데이터베이스를 쉽게 연결하고 관리할 수 있습니다. SQLAlchemy는 파이썬 객체를 데이터베이스 테이블에 매핑하여 데이터베이스와 상호 작용하는 것을 더욱 직관적으로 만들어줍니다.

pip install Flask SQLAlchemy

주요 개념

  • SQLAlchemy: 파이썬 ORM으로, 객체와 관계형 데이터베이스 테이블을 매핑하는 역할을 합니다.
  • Model: 데이터베이스 테이블과 대응되는 파이썬 클래스입니다.
  • Session: 데이터베이스와의 상호 작용을 위한 세션 객체입니다.

1. Flask 애플리케이션 생성 및 설정

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# 데이터베이스 설정
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'  # SQLite 사용 예시
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False  # 추적 비활성화

db = SQLAlchemy(app)
  • SQLALCHEMY_DATABASE_URI: 데이터베이스 연결 문자열을 설정합니다.
  • SQLALCHEMY_TRACK_MODIFICATIONS: 모델 변경 사항을 자동으로 추적하는 기능을 비활성화합니다.

2. 모델 정의

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username
  • db.Model: SQLAlchemy 모델을 상속받아 테이블과 매핑할 클래스를 정의합니다.
  • db.Column: 테이블의 각 열을 정의합니다.

3. 데이터베이스 생성 및 모델 초기화

with app.app_context():
    db.create_all()

위 코드를 실행하면 app.db라는 SQLite 데이터베이스가 생성되고, User 모델에 해당하는 테이블이 생성됩니다.

4. 데이터베이스 CRUD 작업

# 데이터 추가
user = User(username='admin', email='admin@example.com')
db.session.add(user)
db.session.commit()

# 데이터 조회
users = User.query.all()
for user in users:
    print(user.username)

# 데이터 수정
user = User.query.filter_by(username='admin').first()
user.email = 'new_email@example.com'
db.session.commit()

# 데이터 삭제
db.session.delete(user)
db.session.commit()