본문 바로가기

TIL

[TIL 2024. 04. 02] git pull | 게시글 작성.html을 db에 저장하기

git pull

이전에 git 강의에서는 로컬 브랜치에서 add, commit, push한 후에 깃허브 사이트에서 pr을 하며 바로바로 main에 merge하는 방식을 배웠다. 근데 이번에 진행하고 있는 프로젝트 팀에서는 각자 자기 이름의 로컬 브랜치를 파고, 거기서 add, commit, push까지만 하고 다시 수정을 진행하고 add, commit, push를 반복하는 방식을 채택하고 있다. 즉, main브랜치와의 pr과 merge를 가장 마지막에 하기로 한 것이다.

 

이런 방식은 처음이라 다른 팀원분이 push하신 커밋을 로컬 브랜치에 pull해와야 하는데, 이 과정이 원활하지 않아서 오늘 다들 고생을 했다..ㅎㅎ

 

구체적으로는 내가 db를 담당해서 DB_app.py라는 파일이 app.py와 별도로 있었는데(어차피 후반부로 가면 모두 app.py로 합칠 예정_왜냐면 from DB_app.py import * 같은 방식은 복잡해서 초심자인 우리에게는 맞지 않음..) 내가 수정 후 push를 해도 깃허브에서도 내 이름의 브랜치에만 수정사항이 반영되고, 다른 분들은 pull을 해도 DB_app.py가 생겨나지 않는 문제가 있었다

 

결과적으로 해결은 git pull origin "커밋 가져올 특정 브랜치명"으로 pull하면 된다. 그 전까지는 git pull로만 하거나, 습관적으로 git pull origin main으로 pull을 했었다. 그런데 튜터님 말씀으로는 git pull로만 하면 여러 브랜치를 가져오게 되므로 브랜치마다 conflict가 날 확률이 높고, 실제 현업에서도 이렇게 여러 브랜치를 가져오는 경우는 없다고 한다. 사실 나도 주로 쓰던 명령어가 git pull origin main이었던 걸 생각해보면 하나의 브랜치만 pull(여기서는 main 브랜치)하는게 일반적이긴 하다.

 

또 질문 과정에서 알게 된 건데, vscode에서 충돌해결시에 왼쪽 배너에 "소스 제어"항목에서 각 변경사항마다 +으로 정리해주고, 커밋을 할 수 있다. 이전에 빈 db에서 계속 충돌표시가 날 때(!로) 해결방법을 몰라 그냥 clone을 다시 하곤 했었는데, 소스 제어를 사용하면 손쉽게 해결 가능함!


게시글 작성.html을 db에 저장하기

현재 우리 팀 프로젝트에서 필요한 테이블은 "UserInfo", "Posting", "Comment" 이렇게 3개다.

UserInfo는 추후에 로그인 기능을 구현하고, 회원가입.html을 추가하고 진행해야 한다. 또 Comment(댓글)도 게시물 조회.html에서 출력되도록 계획했으므로 일단 가장 시급한 건 "Posting"테이블에 게시글 작성.html의 input값을 넣어주는 것이었다.

 

우리는 (약 4일이라는 기간에 쫓기고 있으므로..ㅎㅎ)SQLAlchemy를 사용해서 DB를 구성하고, 테이블을 생성했다.

그렇게 입력값을 Posting테이블에 저장하기 위한 코드를 다음과 같이 작성했다.

게시물 작성.html에서 받은 입력값을 Posting테이블에 저장

 

코드를 맞게 작성한 것 같은데, 계속 Not Found 오류가 발생했다. 처음에는 html에서 입력받는 순서와 테이블의 스키마 순서가 달라서인가 생각도 했는데, 매핑만 잘 되어있으면 입력 순서 자체는 중요하지 않았다.

 

또 DB_app.py로 나눠서 하는 것도 문제가 되나 해서 DB_app.py의 내용들을 전부 app.py로 옮겨도 보았다. 그 결과로 오류 메시지가 달라짐. 이 과정에서의 교훈은 SQLAlchemy를 사용할 때는 app.py파일에서 원칙적으로 모두 작성해주자는 것!

 

 오류의 원인을 몰라 너무 답답했는데..알고 보니 html의 "name"값을 가져오는 걸 "id"값을 가져오는 것으로 착각하고 변수명을 맞춰주는 바람에 발생한 오류였다..ㅜㅜ

"id"값을 변수명과 잘 매핑해주고 나니 오류없이 db에 입력값이 잘 들어간다.

"id가 아니라 "name"이다..!