python - 是否有用于 Python 包装器的 Protocol Buffers 允许在 Python 代码而不是 proto 文件中进行对象注释?

标签 python serialization protocol-buffers

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

在普通原型(prototype)文件中描述每个对象并保持 booth 层次结构最新是一件非常痛苦的事情。

所以我想知道是否有一种方法可以在 python 中使用 Protocol Buffers 注释\依赖于 python 代码中的反射(就像他们在 protobuf-net 中那样做一样)?

最佳答案

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

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

然后必须正常调用 protoc 以获得在 SQLAlchemy 对象中定义的那些的 protobuf 类。因此,每次更改 SQLAlchemy 对象定义后,我都必须调用脚本构建原型(prototype)文件并调用 protoc。这出奇地好。

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

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

关于python - 是否有用于 Python 包装器的 Protocol Buffers 允许在 Python 代码而不是 proto 文件中进行对象注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35867781/

相关文章:

python - flask-ask 插槽总是被映射到 None

python - 初始化多个 Numpy 数组(多重赋值)——类似于 MATLAB deal()

python - 类 : cannot use self inside the decorated function 中的装饰器

c# - 使用 XamlServices.Save() 序列化 xaml 文档时如何在每个属性后添加换行符

java - Jackson:如何在不修改 POJO 的情况下向 JSON 添加自定义属性

java - 尝试写入 HDFS 时出现 InvalidProtocolBufferException

java - Protocol Buffer 编译器maven插件

python - thread.start_new_thread 与 threading.Thread.start

c# - 带有 Vector2Int 类型键的 JsonConvert 字典

machine-learning - 图中没有名为 [输入] 的操作“微调/重新训练 inceptionV1 slim 模型时出错