📌 개념 정리
3-12. 정리
1️⃣ Flask-SQLAlchemy 설정
먼저, Flask 애플리케이션에 Flask-SQLAlchemy를 설정합니다. 이를 위해 SQLAlchemy 객체를 생성하고 Flask 앱과 연결합니다.
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
# Flask 애플리케이션 생성
app = Flask(__name__)
# 데이터베이스 URI 설정
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///yourdatabase.db' # 여기서 데이터베이스 URI 설정
# SQLAlchemy 객체 생성 및 Flask 앱과 연결
db = SQLAlchemy(app)
- SQLAlchemy 객체를 생성하여 Flask 애플리케이션에 연결합니다. 이렇게 설정하면, SQLAlchemy를 사용하여 데이터베이스와 상호작용할 수 있습니다.
2️⃣ 모델 정의
데이터베이스 테이블에 해당하는 모델 클래스를 정의합니다. 이 클래스는 **db.Model**을 상속받아 SQLAlchemy ORM을 통해 데이터베이스 작업을 수행할 수 있습니다.
class User(db.Model):
id = db.Column(db.Integer, primary_key=True) # 고유 ID 필드
username = db.Column(db.String(80), unique=True, nullable=False) # 사용자명 필드
- User 모델은 db.Model을 상속받아 데이터베이스 테이블을 정의합니다.
- id와 username은 User 테이블에서 사용되는 필드입니다.
3️⃣ 데이터 조회
데이터베이스로부터 데이터를 가져오는 과정은 주로 query 객체를 사용하여 수행됩니다. 아래는 몇 가지 일반적인 조회 방법입니다:
📍 모든 레코드 조회
users = User.query.all()
for user in users:
print(user.username)
- query.all(): User 테이블에서 모든 레코드를 가져옵니다.
📍 특정 조건을 만족하는 레코드 조회
user = User.query.filter_by(username='exampleuser').first()
if user:
print(user.username)
- filter_by(): 주어진 조건(username='exampleuser')에 맞는 첫 번째 레코드를 반환합니다.
📍 기본 키로 조회
user = User.query.get(user_id)
if user:
print(user.username)
- query.get(): 기본 키(primary key)로 레코드를 조회합니다. user_id로 사용자를 조회합니다.
4️⃣ 조회 결과 활용
조회된 결과는 Python 객체로 반환되므로, 이를 직접 사용하거나 필요한 데이터만 추출하여 다른 형식(JSON 등)으로 변환할 수 있습니다.
📍 Flask 뷰에서 JSON 응답하기
from flask import jsonify
@app.route('/users')
def list_users():
users = User.query.all()
return [{'id': user.id, 'username': user.username} for user in users]
- 조회된 User 데이터를 JSON 형식으로 변환하여 클라이언트에게 반환합니다.
✅ 마무리 요약 및 복습 포인트
- Flask-SQLAlchemy 설정: SQLAlchemy 객체를 생성하고 앱과 연결하여 데이터베이스 작업을 수행합니다.
- 모델 정의: 데이터베이스 테이블을 db.Model 클래스를 상속받아 정의합니다.
- 데이터 조회: query.all(), filter_by(), query.get()을 사용하여 데이터를 조회합니다.
- 조회 결과 활용: 조회된 데이터를 필요한 형식으로 변환하고 클라이언트에게 응답합니다.
'Flask' 카테고리의 다른 글
Chapter 4-2 실습_블로그 구현 (Flask-MySQL를 활용) (0) | 2025.04.22 |
---|---|
Chapter 4-1 Flask-Migrate란? (0) | 2025.04.22 |
Chapter 3-11 직렬화(Serialization) & 역직렬화(Deserialization) (0) | 2025.04.21 |
Chapter 3-10 Schema & Model 차이 (0) | 2025.04.21 |
Chapter 3-9 Flask-SQLAlchemy CRUD 테스트 방법 (0) | 2025.04.21 |