在 Elasticsearch 写入数据时出现 'pydantic_initialised' ,这是 Pydantic 库中的一个标志,表示已经初始化了 Pydantic 模型。当将 Pydantic 模型序列化为 JSON 字符串时,该标志会被序列化为一个字符串,这通常不会影响数据的写入和检索。

然而,需要注意的是,在处理数据时需要跳过该标志。你可以使用以下方法处理该标志:

  1. 使用 json.dumps() 方法,并在参数 default 中指定一个函数,该函数可以过滤掉 'pydantic_initialised' 标志。
  2. 使用 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)

最终,你可以根据自己的实际情况选择合适的处理方式来解决该问题。

Elasticsearch 写入数据时出现 '__pydantic_initialised__' 的原因

原文地址: https://www.cveoy.top/t/topic/nu3d 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录