모델 사용하기

Red_Panda·2021년 3월 11일
0

오늘은 이전에 만든 모델을 사용할 것이다.

모델 객체 만들기 && 조회하기

flask shell 명령어로 실행해준다. flask shell을 이용해야 모델을 이용할 수 있다.


flask shell을 실행해준후, 이전에 만든 모델들을 불러낸 후 질문 모델 객체를 하나 만들어줬다. 그 다음으로 만들어낸 객체 q를 db에 저장해주는 작업을 해야 한다.

db.session은, db에 연결해 작업한다는 뜻이다.
add는 데이터를 새로 저장하는 함수다.
commit()은 저장이라고 보면 쉽다. 주의할 점은 commit()입력 전까지의 작업들은 rollback 함수를 이용해 되돌릴 수 있지만, commit()을 하면 취소가 불가능하다.

방금 q를 생성한 것과 방법으로 또 q를 생성해 add 후 commit해주면 q.id가 2로, 자동으로 증가하는 것을 알 수 있다.


db에 저장된 데이터들을 조회해보니 2개가 잘 나온다.

id 1번으로 찾은경우

subject='2번째 게시물~'로 찾은경우

filter는 데이터 조회시 조건을 걸어 원하는 데이터만 찾도록 해준다. id의 경우 유일한 값이므로 Question.query.get(1)로도 조회 가능하다. 다만 get의 경우 리스트가 아닌 Question 객체 1개만 반환된다. 조건에 맞는 여러개를 찾을때는 filter 기능을 사용한다.


확인해보기위해 3번째 게시물을 추가하고 commit후 filter로 찾아보았다. 해당하는 Question들이 잘 나온 것을 확인했다.

like() : 괄호안 조건을 해당하는 객체들을 보여준다. 괄호안에는 다음과 같이 조건을 넣어줄 수 있다. 영어의 경우 대소문자 구분을 하지 않으려면 ilike()를 사용하면 된다.

게시판% : '게시판'으로 시작하는 문자열
%게시판 : '게시판'으로 끝나는 문자열
%게시판% : '게시판'이 포함된 문자열

데이터 수정 및 삭제


먼저 수정할 데이터를 q에 넣어주고, =연산자를 이용하면 수정된다. 기존 제목으로 찾았을 때 없어진 것을 볼 수 있다.


삭제방법은 delete를 이용해 삭제할 수 있다. 아까 테스트하기 위해 만들었던 3번째 데이터를 삭제 해봤다.

질문 데이터도 만들어봤으니, 이제 답변 데이터도 생성해 보겠다.

답변 데이터 생성도 질문 데이터와 비슷한 방식으로 수행한다. 먼저 q에 답변할 질문을 지정 해준다. 그리고 Answer 함수를 이용하면 된다. question=q는 어떤 질문에 답변할것인지 정해주는 역할이다. 위 사진은 q.id가 2인 질문에 답변을 달아준다는 의미다. 그리고 question에 q를 대입하면 question_id에도 값이 자동으로 입력된다. id는 기본키이므로 역시 자동생성 됐다.

a는 Answer 1번이고, Question 2에 대한 답변이다. 답변에 대해서 어느 질문에 남긴 답변인지 알 수 있다.

이와 반대로, 질문을 고르고, 이 질문에 대한 답변들을 조회하려면 이전에 설정한 역참조 설정(backref=db.backref(‘answer_set’)을 이용하면된다.

생성, 조회, 수정, 삭제등 Flask에서 수행할 작업이 끝났다면 Ctrl+Z를 누른후 Enter로 빠져나오면 된다.

다음에는 질문 목록과 질문상세를 보여주는 기능을 만들어 본다.

profile
신입 개발자

0개의 댓글