[Persistence][v2] register_custom_data_class 静默地要求一个未文档化的 `_schema` 属性; 写入成功,查询失败,仅有 Rust 的解决方法

作者: shanezilla创建于 2026年9月12日更新于 2026年9月14日

register_custom_data_class 文档中描述了 Python 定制数据类的一个必需协议(type_name_static()/__name__from_jsondecode_record_batch_py,具有 ts_event/ts_init/encode_record_batch_py 的实例)。一个完全符合该协议的类 注册成功并写入成功,但 无法被查询回

OSError: Failed to query custom data: custom data type 'SensorReading' is not registered with an Arrow schema containing ts_init; call ensure_custom_data_registered::<T>() before querying

查询路径还需要一个 Arrow 方案,从 Python 来看,它只从一个 未文档的 _schema 类属性 中获取。在类上设置 _schema = pyarrow.schema([...]) 可使 query_custom_data 返回行。没有任何文档,.pyi 代码或包的 Python 源代码提及 _schema,错误消息中提到了 Rust 通用函数(ensure_custom_data_registered::<T>()),Python 调用者无法调用它。

内容来源: nautechsystems/nautilus_trader