SQLAlchemy : python 에서 사용가능한 ORM 라이브러리 (≒ JS - TypeORM)
[question 테이블 구성 예]
| id | subject | content |
|---|---|---|
| 1 | 안녕하세요 | 가입 인사드립니다 ^^ |
| 2 | 질문 있습니다 | ORM이 궁금합니다 |
| ... | ... | ... |
[쿼리를 이용한 새 데이터 삽입 예]
# crud.py (or DAO Layer)
insertinto question (subject, content)values ('안녕하세요', '가입 인사드립니다 ^^');
insertinto question (subject, content)values ('질문 있습니다', 'ORM이 궁금합니다');
[ORM을 이용한 새 데이터 삽입 예]
# crud.py
question1 = Question(subject=’안녕하세요’, content='가입 인사드립니다 ^^')
db.session.add(question1)
question2 = Question(subject=’질문 있습니다’, content='ORM이 궁금합니다')
db.session.add(question2)
[질문 모델 속성]
| 속성명 | 설명 |
|---|---|
| id | 질문 데이터의 고유 번호 |
| subject | 질문 제목 |
| content | 질문 내용 |
| create_date | 질문 작성일시 |
[답변 모델 속성]
| 속성명 | 설명 |
|---|---|
| id | 답변 데이터의 고유 번호 |
| question_id | 질문 데이터의 고유 번호(어떤 질문에 달린 답변인지 알아야 하므로 질문 데이터의 고유 번호가 필요하다) |
| content | 답변 내용 |
| create_date | 답변 작성일시 |
models.py 파일에 모델 클래스들을 정의하여 사용한다
from pyboimport db
classQuestion(db.Model):
id = db.Column(db.Integer, primary_key=True)
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.Model 클래스를 상속하여 만든다
__init__.py 파일에서 생성한 SQLAlchemy 클래스의 객체.Question 모델의 각 속성은 db.Column으로 생성
데이터 타입
db.Column() 괄호 안의 첫 번째 인수
속성에 저장할 데이터의 종류 결정
db.Integer : 고유 번호와 같은 숫자값db.String : 글자 수가 제한된 텍스트db.Text : 글자 수를 제한할 수 없는 텍스트db.DateTime : 작성일시 (날짜, 시각)추가 속성
nullable=False로 설정해야 한다.More...
https://lowelllll.github.io/til/2019/04/19/TIL-flask-sqlalchemy-orm/