+ 새로운 팀원의 추가를 위한 input form
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) NOT NULL constraint failed
위 에러는 처음 DB에 정의한 id를 create문을 작성할 때 request값으로 오고 새로운 변수에 넣으려할 때 처음 발생
이후 문제가 된 create문의 id값을 지워도 지속적으로 발생했다.
해결법은 고민한 시간에 비하면 매우 간단했다.
기존의 DB를 지우고 새로 만들면 해결
CRUD를 모두 구현하기 위해 새로운 팀원의 추가(Create)를 위한 input form과 팀원들의 list, 팀원의 정보 출력(Read), 팀원의 정보 수정(Update), 팀원 삭제(Delete)를 한 페이지에서 모두 구현하는 방향으로 계획했지만 (input form은 modal 형태로 사용), 실제로 코딩을 하다보니 Update와 Delete는 데이터를 특정지을 arg를 url을 통해 받아야 하는데 한 페이지에서 구현하기 어렵다고 판단이 되었다. 이를 해결하고자 같은 팀에 동명이인이 없다는 전제로 Create와 Update를 하나의 함수에서 if문을 사용하여 기존에 있는 이름인 경우 Update 기능이 되도록 구현하였다. 내일은 팀원들과 Delete 기능을 새로운 페이지를 추가하여 개발할지에 관해 논의할 예정이다.
username_receive=request.form["username"]
image_url_receive=request.form["image_url"]
mbti_receive=request.form["mbti"]
collabo_style_receive=request.form["collabo_style"]
advantage_receive=request.form["advantage"]
blog_url_receive=request.form["blog_url"]
if request.method == "POST":
# 이름이 이미 있는 경우
if Member.query.filter_by(username=username_receive).first():
object = Member.query.filter_by(username=username_receive).first()
object.image_url = request.form["image_url"]
object.mbti = request.form["mbti"]
object.collabo_style = request.form["collabo_style"]
object.advantage = request.form["advantage"]
object.blog_url = request.form["blog_url"]
else: # 이름이 없는 경우
member = Member(
username=username_receive,
image_url=image_url_receive,
mbti=mbti_receive,
collabo_style=collabo_style_receive,
advantage=advantage_receive,
blog_url=blog_url_receive,
)
db.session.add(member)
db.session.commit()
사진 출처: 드림어스컴퍼니 채용