ORM 모델 다뤄보기
플라스크에서 ORM 라이브러리를 사용
가장 대표적으로 사용되는 SQLAlchemy와 파이썬 모델을 이용해 데이터를 다룰수 있게 해주는 flask-migrate 를 설치
# Flask-Migrate만 깔아도 SQLAlchemy가 설치됨
pip install Flask-Migrate
질문 모델 생성
# models.py
from sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Question(db.Model):
id = db.Column(db.Integer, primary_key=True) # 질문ID
subject = db.Column(db.String(200), nullable=False) # 제목
content = db.Column(db.Text(), nullable=False) # 내용
create_date = db.Column(db.DateTime(), nullable=False) # 생성 날짜
위와 같이 Question 클래스를 만듬. db.Column 을 이용하여 컬럼을 정의할 수 있다.
답변 모델 생성
# models.py
...
#-----------------------------------------------#
class Answer(db.Model):
id = db.Column(db.Integer, primary_key=True) # 답변ID
question_id = db.Column(db.Integer, db.ForeignKey('question.id', ondelete='CASCADE')) # 답변에 해당하는 질문의 ID
question = db.relationship('Question', backref=db.backref('answer_set')) # 역참조 설정
content = db.Column(db.Text(), nullable=False) # 답변내용
create_date = db.Column(db.DateTime(), nullable=False) # 생성 시간
답변은 특정 질문에 대한 답을 하는 것이기 때문에 Question 테이블의 정보와 어느정도 연계 되어야 한다.
어떤 속성을 기존 모델과 연결하기 위해서 db.ForeignKey 을 사용
추가적으로 ondelete는 삭제연동설정
특정 질문을 삭제하면 그에 달린 답변도 모두 삭제되도록 한다.
# 모델을 추가했으므로, 데이터 베이스 적용
flask db migrate
# 실행
flask db upgrade
실행 의 결과로 아래와 같은 db 파일이 생성될 것
모델 사용하기
플라스크 셸에 접속
$ flask shell
Python 3.6.9 (default, Jan 26 2021, 15:33:00)
[GCC 8.4.0] on linux
App: app [production]
Instance: /home/sunbean/venv/var/app-instance
>>>
기존에 만든 Question, Answer 모델을 불러와 질문 객체를 하나 만든다.
>>> from app.models import Question, Answer
>>> from datetime import datetime
>>> q = Question(subject='첫번쨰 질문이에용', content='안녕하세요!', create_date=datetime.now())
>>>
질문객체를 만든 뒤 db객체를 만들어 저장을 해야한다.
>>> from app import db
>>> db.session.add(q)
>>> db.session.commit()
db.session은 데이터베이스와 연결된 세션을 의미한다. 데이터베이스 처리를 위해서는 반드시 이 세션이 필요함
Author And Source
이 문제에 관하여(ORM 모델 다뤄보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mokipha/모델-만들기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)