Elasticsearch 写入数据时出现 '__pydantic_initialised__' 的原因
在 Elasticsearch 写入数据时出现 'pydantic_initialised' ,这是 Pydantic 库中的一个标志,表示已经初始化了 Pydantic 模型。当将 Pydantic 模型序列化为 JSON 字符串时,该标志会被序列化为一个字符串,这通常不会影响数据的写入和检索。
然而,需要注意的是,在处理数据时需要跳过该标志。你可以使用以下方法处理该标志:
- 使用
json.dumps()方法,并在参数default中指定一个函数,该函数可以过滤掉 'pydantic_initialised' 标志。 - 使用 Pydantic 库的
model_dump()方法,并在参数exclude_unset中设置为True,这样就可以将未设置的字段(例如 'pydantic_initialised')排除在外。
例如,使用 json.dumps() 方法过滤 'pydantic_initialised' 标志:
import json
from pydantic import BaseModel
class MyModel(BaseModel):
name: str
age: int
model = MyModel(name='Alice', age=30)
def my_encoder(obj):
if isinstance(obj, MyModel):
return obj.dict(exclude={'__pydantic_initialised__'}) # 过滤 '__pydantic_initialised__' 标志
return obj
json_data = json.dumps(model, default=my_encoder)
print(json_data)
最终,你可以根据自己的实际情况选择合适的处理方式来解决该问题。
原文地址: https://www.cveoy.top/t/topic/nu3d 著作权归作者所有。请勿转载和采集!