protobuf python api
摘要:
python中一切都可以看作类。那么如何查看每个类的API。使用ipython
python protobuf 的函数在message中定义
编译
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.
protobuf python api的更多相关文章
- Appium python API 总结
Appium python api 根据testerhome的文章,再补充一些文章里面没有提及的API [TOC] [1]find element driver 的方法 注意:这几个方法只能通过sel ...
- The novaclient Python API
The novaclient Python API Usage First create a client instance with your credentials: >>> f ...
- Openstack python api 学习文档 api创建虚拟机
Openstack python api 学习文档 转载请注明http://www.cnblogs.com/juandx/p/4953191.html 因为需要学习使用api接口调用openstack ...
- BotVS开发基础—Python API
代码 import json def main(): # python API列表 https://www.botvs.com/bbs-topic/443 #状态信息 LogStatus(" ...
- 《Spark Python API 官方文档中文版》 之 pyspark.sql (一)
摘要:在Spark开发中,由于需要用Python实现,发现API与Scala的略有不同,而Python API的中文资料相对很少.每次去查英文版API的说明相对比较慢,还是中文版比较容易get到所需, ...
- 《Spark Python API 官方文档中文版》 之 pyspark.sql (二)
摘要:在Spark开发中,由于需要用Python实现,发现API与Scala的略有不同,而Python API的中文资料相对很少.每次去查英文版API的说明相对比较慢,还是中文版比较容易get到所需, ...
- HBase Python API
HBase Python API HBase通过thrift机制可以实现多语言编程,信息通过端口传递,因此Python是个不错的选择 吐槽 博主在Mac上配置HBase,奈何Zoomkeeper一直报 ...
- 二、Blender/Python API总览
原文:https://docs.blender.org/api/blender_python_api_current/info_overview.html Python in Blender Ble ...
- Appium+python自动化8-Appium Python API
Appium+python自动化8-AppiumPython API 前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts conte ...
随机推荐
- intent.putExtra()方法参数详解
[开篇骂几句:fuck]1.扯淡intent.putExtra()怎么使用?2.胡说intent.putExtra(); [扯淡:其实你在问它怎么用的时候,你要明白,你知道不知道这是个什么东东,有必要 ...
- perl-cgi高级
来源: http://www.cnblogs.com/itech/archive/2012/10/07/2714393.html 一 CGI.pm中的方法(routines)调用 1. CGI.pm ...
- Glusterfs 分布式存储安装部署
Glusterfs 分布式存储部署 是存储当中可以选择的一种 现在很多虚拟化 云计算都在用软件存储 例如 ceph Glusterfs 等等 今天我们部署一下Glusterfs环境 GlusterFs ...
- vi编辑器常见命令的使用
Linux下的文本编辑器有很多种,vi 是最常用的,也是各版本Linux的标配.注意,vi 仅仅是一个文本编辑器,可以给字符着色,可以自动补全,但是不像 Windows 下的 word 有排版功能. ...
- Roboguice学习之视图注入
Robuguide的使用 准备工作: 首先在项目中必须实现GreetingModule和RoboguiceDemoApplication GreetingModule.java import com. ...
- Redis(2)用jedis实现在java中使用redis
昨天已经在windows环境下安装使用了redis. 下面准备在java项目中测试使用redis. redis官网推荐使用jedis来访问redis.所以首先准备了jedis的jar包,以及需要依赖的 ...
- Nginx代理外网映射
外网映射内网端口8080, 外网访问使用端口8379: nginx监听8080和80端口 #user nobody; worker_processes ; #error_log logs/error. ...
- string 与wstring 的转换
std::wstring StringToWString(const std::string &str) { std::wstring wstr(str.length(),L' '); std ...
- rstPixelType Constants
Constant Value Description PT_UNKNOWN -1 Pixel values are unknown. PT_U1 0 Pixel values are 1 bit. P ...
- zf-关于把某个地址的svn项目移动到另一个上面的步骤
1 首先查检出来 2 然后断开连接 删除元信息(这个必须注意,很敏感的,不然酒吧元信息带入到了另外一个svn地址中了) 3 之后再到另外一个svn上建立远程资源文件,把项目导入进去,注意不要导入错了, ...