스크린샷 2024-05-08 오후 10.59.06.png

스크린샷 2024-05-08 오후 10.59.23.png

테이블 목록에서 question, answer 테이블 생성을 확인

파이썬 쉘로 모델 테스트

python  
Python 3.10.9 (v3.10.9:1dd9be6584, Dec  6 2022, 14:37:36) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from models import Question, Answer
>>> from datetime import datetime
>>> q = Question(subject='pybo가 무엇인가요?', content='pybo에 대해서 알고 싶습니다.', create_date=datetime.now())
>>> 
>>> from database import SessionLocal
>>> db = SessionLocal()
>>> db.add(q)
>>> db.commit()
>>> 
>>> q.id
1
>>> q = Question(subject='FastAPI 모델 질문입니다.', content='id는 자동으로 생성되나요?', create_date=datetime.now())
>>> db.add(q)
>>> db.commit()
>>> q.id
2
>>> db.query(Question).all()
[<models.Question object at 0x10499c490>, <models.Question object at 0x1048ef100>]
>>> db.query(Question).filter(Question.id==1).all()
[<models.Question object at 0x10499c490>]
>>> 

스크린샷 2024-05-08 오후 11.05.12.png

 db.query(Question).filter(Question.subject.like('%FastAPI%')).all()
[<models.Question object at 0x1048ef100>]

"FastAPI"라는 문자열이 포함된 질문이 조회되었다. filter 함수에 전달한 Question.subject.like('%FastAPI%') 코드의 의미는 Question 모델 subject 속성에 "FastAPI"라는 문자열이 포함되는가?"이다. 이때 like 함수에 전달한 문자열에 붙은 % 표기는 다음과 같은 의미를 갖는다.

대소 문자 구분하지 않고 문자열을 찾으려면 like 함수 대신 ilike 함수를 사용한다.

2-03 모델로 데이터 처리하기