如何反序列化协议缓冲区消息,只知道protoc生成类的字符串名称?
由于某些原因,我使用DESCRIPTOR.full_name
获得的消息的完全限定名与python类的实际位置不匹配,因此无法使用以下函数对其进行反序列化:
def get_class( kls ):
"""Get class given a fully qualified name of a class"""
parts = kls.split('.')
module = ".".join(parts[:-1])
m = __import__( module )
for comp in parts[1:]:
m = getattr(m, comp)
return m
我只得到ImportError
没有模块(名称)。
感谢任何帮助。
备注:如果有帮助的话,我要解决的更大的问题是将protobuf消息序列化到数据库,然后反序列化它(在本例中,我将postgresql与sqlalchemy一起使用)。因为常规的python pickle不起作用-我希望存储一个元组(message_cls_name, message_binary)
,其中message_cls_name
是protobuf消息的完全限定名,而message_binary
是对消息调用SerializeToString
的结果。我不清楚的是如何将消息取出并反序列化为适当的protobuf类。
目前没有回答
相关问题
PyPI热门下载资源包