小精灵

mercator的Python项目详细描述


version 0.1.10

python dsl利用字典和sqlalchemy到protobuf对象的转换

PyPi Project PageTravis BuildDocumentation StatusTest Coverage Reports

墨卡托是什么?

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)

贡献

  1. 检查code structure documentation
  2. 编写测试
  3. 编写代码
  4. 发送拉取请求

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java根据两个数组的值对数组进行排序   具有自签名证书和NTLM代理的java Maven SSL repo错误   java自定义字体按钮不工作AndroidStudio   java通过Spring MVC web应用程序向客户端发送文本文件   Java Spring Web服务SOAP身份验证   ANT property environment=“env”无法在JAVA中检索它,但如果作为ANT命令运行,则可以正常工作   java是为spring mvc rest api或spring boot api对应用服务器的每个新请求创建的服务、存储库和组件的新实例吗?   java私有静态最终字符串未完成其工作   PKCS12的安全Java密钥重新处理   java JPA继承表每类SQLSyntaxErrorException