摘要:

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(self, other_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(self, other_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

 

protobuf python api的更多相关文章

  1. Appium python API 总结

    Appium python api 根据testerhome的文章,再补充一些文章里面没有提及的API [TOC] [1]find element driver 的方法 注意:这几个方法只能通过sel ...

  2. The novaclient Python API

    The novaclient Python API Usage First create a client instance with your credentials: >>> f ...

  3. Openstack python api 学习文档 api创建虚拟机

    Openstack python api 学习文档 转载请注明http://www.cnblogs.com/juandx/p/4953191.html 因为需要学习使用api接口调用openstack ...

  4. BotVS开发基础—Python API

    代码 import json def main(): # python API列表 https://www.botvs.com/bbs-topic/443 #状态信息 LogStatus(" ...

  5. 《Spark Python API 官方文档中文版》 之 pyspark.sql (一)

    摘要:在Spark开发中,由于需要用Python实现,发现API与Scala的略有不同,而Python API的中文资料相对很少.每次去查英文版API的说明相对比较慢,还是中文版比较容易get到所需, ...

  6. 《Spark Python API 官方文档中文版》 之 pyspark.sql (二)

    摘要:在Spark开发中,由于需要用Python实现,发现API与Scala的略有不同,而Python API的中文资料相对很少.每次去查英文版API的说明相对比较慢,还是中文版比较容易get到所需, ...

  7. HBase Python API

    HBase Python API HBase通过thrift机制可以实现多语言编程,信息通过端口传递,因此Python是个不错的选择 吐槽 博主在Mac上配置HBase,奈何Zoomkeeper一直报 ...

  8. 二、Blender/Python API总览

    原文:https://docs.blender.org/api/blender_python_api_current/info_overview.html Python in Blender  Ble ...

  9. Appium+python自动化8-Appium Python API

    Appium+python自动化8-AppiumPython API   前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts conte ...

随机推荐

  1. 关于WIFI DIRECT功能的

    http://processors.wiki.ti.com/index.php/WiFi_Direct_Configuration_Scripts#p2p_find      https://wire ...

  2. wl18xx module crash with "wlcore: ERROR ELP wakeup timeout!"

    [ 111.322967] wlcore: ERROR ELP wakeup timeout![ 111.327636] ------------[ cut here ]------------[ 1 ...

  3. OC中的野指针,空指针,nil,Nil,NULL,NSNULL小结

    周末与一个老朋友吃饭聊天,因为他正在培训班学习iOS开发,就随便聊了几句,发现自己OC基础上的欠缺和一些知识点的混淆.特此整理如下. 1.空指针 没有存储任何内存地址的指针就称为空指针(NULL指针) ...

  4. sql server 数据库导出表里所有数据成insert 语句

    有时候,我们想把数据库的某张表里的所有数据导入到另外一个数据库或另外一台计算机上的数据库,对于sql server有这样的一种方法 下面我以sql server 2008 R2,数据库是Northwi ...

  5. css 重新学习系列(2)

    摘自: http://www.cnblogs.com/liuzhaoyang/articles/3289456.html Position定位:relative | absolute 定位一直是WEB ...

  6. ZendStudio格式化HTML代码方法及格式化后错位问题修正

    ZendStudio中格式化HTML快捷键:Ctrl+Shift+F 为什么html文件里面的内容格式化完都乱套了? 选 择window菜单->Preferences->Web->H ...

  7. couldn't connect to server 127.0.0.1:27017 at src/mongo/shell/mongo.js:145

    当直接执行./mongo 出现这样的提示:couldn't connect to server 127.0.0.1:27017 at src/mongo/shell/mongo.js:145 解决: ...

  8. iOS开发工具——统计Crash的工具Crashlytics

    简介 Crashlytic 成立于2011年,是专门为移动应用开者发提供的保存和分析应用崩溃信息的工具.Crashlytics的使用者包括:支付工具Paypal, 点评应用Yelp, 照片分享应用Pa ...

  9. vbs 解析html文档的方法

    vbs 解析html文档的方法(htmlfile) 投稿:mdxy-dxy 字体:[增加 减小] 类型:转载 时间:2014-06-18我要评论 关于VBS采集,网上流行比较多的方法都是正则,其实 h ...

  10. 干货分享:MySQL之化险为夷的【钻石】抢购风暴【转载】

    转自: 干货分享:MySQL之化险为夷的[钻石]抢购风暴 - Vanos_韩尛哲 - 博客园http://www.cnblogs.com/Vanos-lcp/p/5642097.html 抢购钻石不稀 ...