테이블 목록에서 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>]
>>>
db.query(Question).filter(Question.subject.like('%FastAPI%')).all()
[<models.Question object at 0x1048ef100>]
"FastAPI"라는 문자열이 포함된 질문이 조회되었다. filter 함수에 전달한 Question.subject.like('%FastAPI%')
코드의 의미는 Question 모델 subject 속성에 "FastAPI"라는 문자열이 포함되는가?"이다. 이때 like 함수에 전달한 문자열에 붙은 %
표기는 다음과 같은 의미를 갖는다.
FastAPI%
: "FastAPI"로 시작하는 문자열%FastAPI
: "FastAPI"로 끝나는 문자열%FastAPI%
: "FastAPI"를 포함하는 문자열대소 문자 구분하지 않고 문자열을 찾으려면 like 함수 대신 ilike 함수를 사용한다.