본문 바로가기
공부기록/파이썬

[Flask] MongoDB에서 TypeError 문제(_id)

by 책읽는 개발자 ami 2023. 7. 4.
728x90
반응형

1. id를 제외하고 직렬화를 시키거나 2. id를 직렬화할 수 있게 따로 조치하거나 둘 중 하나의 방법을 사용할 수 있다.

1. id를 제외하고 직렬화 시키기

from flask import Flask, jsonify, request
from pymongo import MongoClient

client = MongoClient('localhost', 27017)
db = self.client['mydatabase']
collection = self.db['mycollection']

jsonify(
list(self.collection.find({}, {'_id': 0})))

2. id를 포함하여 직렬화

str() 함수를 사용하여 _id 값을 문자열로 변환한 뒤 json.loads() 함수 사용하여 json 직렬화 시키기

from pymongo import MongoClient
from bson.json_util import dumps
 
client = MongoClient('localhost', 27017)
db = client['mydatabase']
collection = db['mycollection']
documents = collection.find()
serialized_data = dumps(documents, default=str)
print(serialized_data)

여기까지 하면 뭔가 이상하다. 오류는 안 나지만 JSON 형식이 아니기 때문이다.

따라서 아래까지 같이 써줘야 한다.

from pymongo import MongoClient
from bson.json_util import dumps
import json

client = MongoClient('localhost', 27017)
db = client['mydatabase']
collection = db['mycollection']
documents = collection.find()
serialized_data = dumps(documents, default=str)
json_data = json.loads(serialized_data)
print(json_data)

 

728x90
반응형