FastAPI 를 활용해서 아래와 같이 데이터를 넣는 도중 MongoDB에 데이터를 넣는 중 에러가 발생했다.
@router.post("/")
def request_regist(Create_Request: Create_Request):
year, month, day = map(int, Create_Request.dead_line.split("."))
request_data = {
"request_date": datetime.datetime.now()
}
db.tech.insert_one(request_data)
return requset_data
TypeError: 'ObjectId' object is not iterable
오류로 인해 DB에 데이터가 삽입되지 않았을 것으로 예상했는데, DB에는 정상적으로 적재되어 있었다.
패키지나 설정의 문제가 아닌가 싶어서 여러 방향으로 확인을 하던 중 한 가지 생각이 들었다.
ObjectId를 사용한 적이 없는데, 관련해서 에러가 발생한 것이라면
insert_one 이후에 request_data 가 바뀌었을 수도 있다고 있다고 생각하고, insert 이후에 데이터를 확인해 보니
입력할 때 없었던 데이터가 생겼다.
{
'request_date': datetime.datetime(2024, 2, 6, 18, 17, 26, 857534),
'_id': ObjectId('65c1f92671d5e76e3c73c5a3')
}
이대로 return 하는 경우에 Type Error가 발생하는 것으로 보여
아래와 같이 수정하니 정상적으로 작동했다.
from bson.json_util import dumps
import json
@router.post("/")
def request_regist(Create_Request: Create_Request):
year, month, day = map(int, Create_Request.dead_line.split("."))
request_data = {
"request_date": datetime.datetime.now()
}
db.tech.insert_one(request_data)
return json.loads(dumps(request_data))
'Backend > Python' 카테고리의 다른 글
[Python] 비트코인 자동 매매 - 준비 (0) | 2024.04.13 |
---|---|
[FastAPI] File Upload 구현하기 (0) | 2024.02.14 |
[Python] Selenuim 스크롤 조작하기 (0) | 2024.02.01 |
[FastAPI] AWS DB - MySQL 연결하기 (1) | 2023.12.20 |
[FastAPI] Project Levup - .env (dotenv) 적용하기 (0) | 2023.11.30 |