App Engine 之外的 db.model from_protobuf() 等效项?

2024-01-10

在 Google AppEngine(GAE) 环境中,我可以执行以下操作将 Protobuf 字节串转换回数据存储模型:

from google.appengine.ext import db

byte_str = ....
model = db.model_from_protobuf(byte_str.decode("base64"))

在 GAE 之外,我通常使用google-cloud-datastore客户端访问数据存储模型:

from google.cloud import datastore

...
client = datastore.Client(project_id)
query = client.query(kind='Event', order=('-date',))
for result in query.fetch(limit=100):
    print result

# every result is of class `google.cloud.datastore.entity.Entity`

Question:如果我只得到编码的字节字符串怎么办?我怎样才能将它转换回google.cloud.datastore.entity.Entity (or dict)?


后续行动:

Update1: google.cloud.proto.datastore.v1.entity_pb2.Entity.ParseFromString()是迄今为止我发现的最接近的。但还没有完全工作..

## fetched a protobuf into `pb`
>>> pb.__class__
<class 'google.cloud.proto.datastore.v1.entity_pb2.Entity'>

>>> entity = google.cloud.datastore.helpers.entity_from_protobuf(pb)
>>> entity.__class__
<class 'google.cloud.datastore.entity.Entity'>

>>> serialized = pb.SerializeToString()     ## <-- now this is the bytestring I meant.
>>> type(serialized)
<type 'str'>

>>> google.cloud.proto.datastore.v1.entity_pb2.Entity.ParseFromString(serialized)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: descriptor 'ParseFromString' requires a 'google.protobuf.pyext._message.CMessage' object but received a 'str'

>>>google.cloud.proto.datastore.v1.entity_pb2.Entity().ParseFromString(serialized)
76942    ## <--??

Update2:

实际上必须这样做:

e = google.cloud.proto.datastore.v1.entity_pb2.Entity()
e.ParseFromString(byte_str)
print e

就这样做到了..


这有效:

e = google.cloud.proto.datastore.v1.entity_pb2.Entity()
e.ParseFromString(byte_str)
print e
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

App Engine 之外的 db.model from_protobuf() 等效项? 的相关文章

随机推荐

  • 如何将 AWS RDS Aurora MySQL 5.6 升级到 5.7

    我们使用 AWS RDS Aurora MySQL 5 6 作为我们的生产数据库 AWS 于 2018 年 2 月 6 日推出兼容 MySQL 5 7 的 Aurora 引擎 我在 修改实例 中没有看到任何将引擎更改为 MySQL 5 7
  • 使用 jquery 按值选择下拉列表

  • Bash 脚本正则表达式

    我正在尝试匹配格式为 4 6 或 2 8 的字符串中的版本号 我最终将在 bashrc 文件中的函数中使用以下内容来查找操作系统版本 function test string abc ABC12 123 3 4 def echo expr
  • 是否有像 Win32 中的“CreateEvent()”那样的 C++ 跨平台“命名事件”?

    我正在寻找类似于 Win32 世界中的 CreateEvent SetEvent 和 WaitForMultipleObjects 的东西 具体来说 这必须可以在同一台机器上跨进程访问 我们已经在使用 Poco 来做一些跨平台的事情 但我不
  • 从 pandas DataFrame 插入 Access 数据库

    请有人告诉我应该如何插入到数据库中 而不是Python中的所有数据帧 我发现了这个 但不知道如何插入所有名为 test data 的数据框 其中包含两个数字 ID Employee id 我也不知道如何插入 ID 的下一个值 类似于 nex
  • 如何编译C程序?

    好久没做C了 我想编译这个程序 http csrc nist gov groups ST toolkit rng documentation software html 但我不知道如何继续 看起来 makefile 经常引用 GCC 但我从
  • 使用 Python 注入原始 TCP 数据包

    使用 Python 注入原始 TCP 数据包的合适方法是什么 例如 我有由十六进制数字组成的有效负载 并且我想将该十六进制数字序列发送到网络守护程序 这样 如果我选择发送 abcdef 我也会在线路上看到 abcdef 但不是 616263
  • Makefile 循环依赖

    这是我的 Makefile PHONY all homework1 CFLAGS g O0 Wall Werror Wno unused function LDFLAGS lm all homework1 homework1 program
  • 无法在Windows 8.1中的vagrant中安装插件hostmanager

    无法安装插件 显示以下错误 C devbox gt vagrant 插件安装 vagrant hostmanager 插件安装目录 Vagrant 主目录 里面有一个空格 在 Windows 上 Ruby 编译时存在错误 插件到带有空格的目
  • 设置特征通知会导致无效句柄错误

    我想使用 CoreBluetooth 将数据从 iPhone 发送到 Mac 为此 我编写了代码 例如将 iPhone 作为 外围设备 将 Mac 作为 中央设备 工作正常 但有时会直接断开 然后不断地连接和断开 有时 当它尝试重新连接时
  • 使用不带状态的 React

    我正在构建应用程序的 UI 并且正在探索无需使用状态即可更新 UI 下面的断言粗略地正确吗 我们不需要状态 因为它所做的只是当状态中的某些内容发生变化时自动调用组件上的渲染方法 我们可以通过自己调用相关组件的 render 方法来实现相同的
  • 为什么gdb提示“Unexpected size of section `.reg-xstate/xxxxx' in core file.”?

    我的操作系统是Debian 当使用gdb分析一个核心转储文件 会得到以下信息 Program terminated with signal SIGSEGV Segmentation fault warning Unexpected size
  • 使用 SQL 查询查找最近的纬度/经度

    我有纬度和经度 我想从数据库中提取记录 该记录具有距离最近的纬度和经度 如果该距离比指定的距离长 则不检索它 表结构 id latitude longitude place name city country state zip seale
  • 如何安装和设置 RavenDb 索引复制

    r我已经查看了这些问题以及 RavenDb 文档 有一点在RavenDb 索引复制文档 http ravendb net bundles index replication但似乎没有关于如何 何时 何处创建 IndexReplication
  • 如何在 java/jsp 中执行 MS SQL Server 存储过程并返回表数据?

    我在从 Java jsp 执行 MS SQL Server 存储过程时遇到困难 我希望返回一组数据 存储过程的最后一行是来自表的常规选择语句 从这一点来看 执行存储过程是轻而易举的事PHP 我查看了这些网站以寻求帮助 www 2netave
  • 尝试以编程方式使用 data.table 时,特定情况下出现“1 级无此类索引”错误

    问题 我编写了一个函数来以编程方式使用 data table 函数如下 transformVariables4 lt function df 1n data c 1n variablesToTransform c 1n newVariabl
  • 带日期的 Excel Open XML 的最小样式表?

    我正在尝试使用 Open XML SDK 创建一个 Excel 文件 其中包含所需的最少样式表 该样式表将允许我将单元格格式设置为日期 以下是我对样式表的尝试
  • 无法通过 Amazon Athena 读取 json 文件

    尝试在示例 JSON 文件 90MB 上测试 Athena 我已将文件放入 S3 中 并尝试了以下操作 使用 Amazon Glue 爬网 JSON 文件所在的文件夹 一切似乎都按顺序进行 但是当我尝试在 Athena 上查询时 出现 内部
  • Ninject,将构造函数参数传递给内核

    这是我的问题 每次我从内核请求一个实例时 我想将其中一个值传递给构造函数 我在下面写了一些代码来说明这个问题 测试没有失败 所以我猜这可行 但它看起来确实很丑陋 使用 Ninject 是否有更好 更简洁的方法来完成此任务 或者我应该重新考虑
  • App Engine 之外的 db.model from_protobuf() 等效项?

    在 Google AppEngine GAE 环境中 我可以执行以下操作将 Protobuf 字节串转换回数据存储模型 from google appengine ext import db byte str model db model