You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3 NDB中如何将新Key转旧版?to_old_key方法用法咨询

问题描述

我用Python3 NDB编写了以下代码获取Key:

new_key = ndb.Key(urlsafe = request.user_key)

之后将其转换为urlsafe格式:

key = new_key.urlsafe()
key.decode(encoding="utf-8")

但转换后的Key和Python2环境下生成的Key不匹配。官方提供了to_old_key方法来兼容旧版,但我不知道该如何正确使用它实现Key的转换。

解决方案

要生成和Python2 NDB一致的urlsafe Key,需要通过to_old_key()先将Python3 NDB的Key转换为兼容旧版的Key对象,再调用旧版Key的urlsafe()方法,具体步骤如下:

  1. 获取Python3 NDB的Key对象(即你代码中的new_key)
  2. 调用to_old_key()方法得到旧版Key实例
  3. 对旧版Key调用urlsafe(),直接得到与Python2环境一致的字符串格式Key

完整代码示例:

# 从urlsafe字符串初始化Python3 NDB Key
new_key = ndb.Key(urlsafe=request.user_key)
# 转换为兼容Python2的旧版Key
old_key = new_key.to_old_key()
# 生成和Python2一致的urlsafe Key字符串
compatible_urlsafe_key = old_key.urlsafe()

说明

  • Python3 NDB的Key.urlsafe()返回的是bytes类型,解码后是新版格式的字符串,和Python2的格式不兼容
  • to_old_key()返回的是旧版NDB的Key对象,它的urlsafe()方法直接返回字符串,格式与Python2环境生成的完全一致

内容的提问来源于stack exchange,提问作者Jaskaran Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 05:47:33