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/