MongoDB python에서 pymongo로 수정하기

jangdu·2023년 5월 20일
0

Flask

목록 보기
2/2

MongoDB CRUD를 사용해서 팀원들을 소개하는 미니 프로젝트를 Python의 웹 프레임워크인 Flask로 구현해보는 과정에서 db에 담긴 내용을 수정하는 과정에서 js로 했던 방식과 다른 부분이 있었다.

js에서 mongodb update하는 방식 글
https://velog.io/@jangdu/5node.js-POST%ED%95%A0%EB%95%8C-id-%EB%84%A3%EC%96%B4-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0-with.DB-Update

flask에서 UPDATE 할 때,
즉 html에서 UPDATE요청을 받을 때

이 글은 mongoDB에는

{_id: id, name: name, comment: comment}

대충 이런식으로 데이터들이 여러개 저장되어 있고
여기서 id는 직접 정해서 넣어줬다.

  • 직접 정해서 넣어주는 이유는 mongoDB에 POST할 때 _id 값을 명시해주지 않으면,
    mongoDB에서 알아서 _id값을 넣어서 DB에 저장해준다.
    _id값은 find()이런거로 접근을 못하게 몽고에서 막아둠
    그래서 특정 값 수정이나 삭제할 때 동명이인 같은거 걸러주려고 _id값을 넣어주고 POST해줌
    (이름으로 검색하면 같은 이름 중에 삭제됨)

venv 가상환경에서 진행하며,
각 라이브러리들은 이미 설치되고 mongoDB도 세팅한 상태
라고 가정하고 작성했다.

// app
@app.route("/guestbook", methods=["UPDATE"])
def guestbook_update():
	# request 받기
    num_receive = request.form['num_give']
    comment_receive = request.form['comment_give']

    # db.Collection.update({ matchQuery }, { updateQuery }, { optionQuery }) - updateMany

    currentId = {'_id' : num_receive}
    newValues = {'$set': {'comment': comment_receive}}
    db.fanm.update_one(currentId , newValues )
    # update_one    updateOne

    print(type(num_receive), comment_receive)

    return jsonify({'msg': '수정 완료!'})
profile
대충적음 전부 나만 볼래

0개의 댓글