小精灵
mercator的Python项目详细描述
version 0.1.10
python dsl利用字典和sqlalchemy到protobuf对象的转换
墨卡托是什么?
Mercator是一个Python库,它简化了 将字典数据序列化为二进制数据的protobuf。
Mercator实际上支持从以下位置提取数据:
- 词典
- sqlalchemy模型实例
- 任何不透明的python对象(例如:collections.namedtuple)
我什么时候该用墨卡托?
- 将rpc的自定义实现迁移到ggrpc时。
- 将内存中的数据迁移到protobuf时。
我什么时候应该不使用mercator?
- 从头开始编写grpc服务时。
- 当写任何使用protobuf的东西时都会被调用。
安装
pip install mercator
基本用法
一。给出一个protobuf声明
syntax="proto3";packageservices.social_platform;import"google/protobuf/timestamp.proto";messageUser{messageAuthToken{stringvalue=1;google.protobuf.Timestampcreated_at=2;google.protobuf.Timestampexpires_at=3;}}
2.声明映射
frommercatorimport(ProtoMapping,ProtoKey,ProtoList,SinglePropertyMapping,)fromgoogle.protobuf.timestamp_pb2importTimestampfromgoogle.protobuf.struct_pb2importStructfromgoogle.protobufimportstruct_pb2ProtobufTimestamp=SinglePropertyMapping(int,Timestamp,'seconds')classUserAuthTokenMapping(ProtoMapping):__proto__=domain_pb2.User.AuthTokenvalue=ProtoKey('data',str)created_at=ProtoKey('created_at',ProtobufTimestamp)expires_at=ProtoKey('expires_at',ProtobufTimestamp)classUserMapping(ProtoMapping):__proto__=domain_pb2.Usertokens=ProtoList('tokens',UserAuthTokenMapping)
三。生成python文件
python -m grpc_tools.protoc -I ./ --python_out=./ --grpc_python_out=./ ./*.proto
四。处理数据!
info={'login':'Hulk','email':'bruce@avengers.world','tokens':[{'data':'this is the token','created_at':1552240433,'expires_at':1552240733,}],}user=UserMapping(info).to_protobuf()assertisinstance(user,domain_pb2.User)
贡献
- 检查code structure documentation
- 编写测试
- 编写代码
- 发送拉取请求