protobuf python api

摘要:

python中一切都可以看作类。那么如何查看每个类的API。使用ipython

python  protobuf 的函数在message中定义

此处所有的api说明:https://developers.google.com/protocol-buffers/docs/reference/python/google.protobuf.message.Message-class


编译

protoc -I=./ --python_out=./ people.proto



1  GidChannelInfo.proto


package bfd.gidchannelinfo;
//定义 gid的来源,是dsp还是电商或者媒体等
message Channel
{
required string name = 1; //来源,例如dsp_Cbehe
required int64 timestamp = 2; //时间戳
}


//key为 G:Channel:gid
message GidChannelInfo
{
required Channel init_channel = 1; //gid初次产生的channel来源
repeated Channel channel = 2; //包含的所有channel渠道
}


2  例子



gidchannelinfo_tmp = GidChannelInfo_pb2.GidChannelInfo()
channel_tmp = GidChannelInfo_pb2.Channel()


DB_SERVER = 'app-2'
db = "DMP_GDMP_Cbehe"
conn = mdb.Connect(DB_SERVER,'bfdroot','qianfendian',db)
cur = conn.cursor()
#cur.execute("select gid,update_time from Mapping_gid where id >0 and id<20000000")
cur.execute("select gid,update_time from Mapping_gid limit 1")
results = cur.fetchall()
for result in results:
    print "result :",str(result)
    gid = result[0]

date_tmp = result[1]
    key = "G:GidChannelInfo:"+gid
    #d = datetime.datetime.strptime(date_tmp,"%Y-%m-%d %H:%M:%S")
    timestamp_tmp = int(time.mktime(date_tmp.timetuple()))
    channel_tmp.name = "dsp_baifendian"
    channel_tmp.timestamp = timestamp_tmp
    print "timestamp_tmp :",timestamp_tmp
    gidchannelinfo_tmp.init_channel.CopyFrom(channel_tmp)
    channel_tmp = gidchannelinfo_tmp.channel.add()
    channel_tmp.name = "dsp_baifendian"
    channel_tmp.timestamp = timestamp_tmp
    channel_tmp = gidchannelinfo_tmp.channel.add()
    channel_tmp.name = "dsp_behe"
    channel_tmp.timestamp = timestamp_tmp
    print "gidchannelinfo_tmp: ",gidchannelinfo_tmp
    mystr = gidchannelinfo_tmp.SerializeToString()


3 注意 :

对于 Singular fields  可以使用 gci.init_channel.MergeFrom赋值

或者对于每个属性赋值。gci.init_channel.name=name



对于repeated fileds可以使用

CopyFrom    MergeFrom



4 api 说明


MergeFrom(selfother_msg)

source code 
Merges the contents of the specified message into current message.

This method merges the contents of the specified message into the current
message. Singular fields that are set in the specified message overwrite
the corresponding fields in the current message. Repeated fields are
appended. Singular sub-messages and groups are recursively merged.

Args:
  other_msg: Message to merge into the current message.


CopyFrom(selfother_msg)

source code 
Copies the content of the specified message into the current message.

The method clears the current message and then merges the specified
message using MergeFrom.

Args:
  other_msg: Message to copy into the current one.


此处所有的api说明: https://developers.google.com/protocol-buffers/docs/reference/python/google.protobuf.message.Message-class

 

转载于:https://www.cnblogs.com/catkins/p/5270510.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值