是否有适用于 Python 包装器的协议缓冲区,它允许在 Python 代码中而不是原型文件中进行对象注释



所以我有一个python的对象模型。我的应用程序处于开发阶段,因此目前我可以允许不稳定的序列化格式。我想在 Python 代码中注释我的对象层次结构(如果需要),或者根本不注释任何内容,允许一些 Protobuf 包装器动态完成这一切。

在普通原型文件中描述每个对象并使展位层次结构保持最新状态将非常痛苦。

所以我想知道是否有办法在 python 注释\依赖 python 代码中的反射中使用协议缓冲区(就像他们在 protobuf-net 中这样做一样)?

我也有类似的问题。我希望能够在数据库中存储对象,同时使用 protobuf 序列化它们。

我使用的方法是在SQLAlchemy

中定义对象,然后使用SQLAlchemy反射(检查方法)编写*.proto文件生成器实用程序。

然后必须正常调用 protoc 才能获取 SQLAlchemy 对象中定义的类的 protobuf 类。因此,在SQLAlchemy对象定义的每次更改之后,我都必须调用脚本构建proto文件并调用protoc。这效果出奇地好。

我正在考虑的另一个选择是设计对象定义格式和生成器,可以生成SQLAlchemy对象和protobuf对象。我决定反对它,因为这种对象定义格式应该能够包含构建 SQLAlchemy 对象(索引、约束、触发器)的所有信息,这就像重新设计 SQLAlchemy 已经做得很好的东西,但你可能不需要如此丰富的对象定义,这种方法可能非常适合你。

我从《Pragmatic Programmer》一书中产生了开发自己的对象定义的想法,您可以在其中阅读更多关于它的信息。

最新更新