python - 为什么 appengine 数据库键的排序方式与字符串不同

标签 python database google-app-engine

我发现这很有趣,并且很好奇为什么数据库键的顺序与字符串不同..

如果您在 Python 开发环境中测试以下示例(对于服务器也是如此),您将看到以下(有些意外)行为

str1 = 'agpyb21hbmNlYXBwchILEglVc2VyTW9kZWwY4-agBgw'
str2 = 'agpyb21hbmNlYXBwchILEglVc2VyTW9kZWwYkoWBBQw'

结果:str < str2TRUE

但是,如果我们执行以下操作

key1 = db.Key(str1)
key2 = db.Key(str2)

结果:key1 < key2FALSE

最佳答案

您要比较的是字符串编码的 key ,这些 key 已通过 base64 传递,以便安全地作为文本输出。 Base64 不保留字符串顺序。如果您使用 base64.urlsafe_b64decode 对它们进行解码,它们将按照您期望的顺序进行比较。

关于python - 为什么 appengine 数据库键的排序方式与字符串不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7572386/

相关文章:

python - 将等于 `None` 的关键字作为函数参数传递有什么意义?

sql - 如何使用与 y 相似的数据创建表 x 并在 oracle 中声明更多新列

python - GAE 谷歌图书 API

python - 如何对 python 图像(使用 numpy、opencv 或 PIL)的每个 PIXEL(不是每个 rgb 组件!)应用操作?

python - 如何使用 wand-py 和 imagemagick 运行此命令

python - 针对使用 Pyspark mllib ALS/MatrixFactorizationModel 的用户子集的建议

mysql - 如何将这 3 个 SQL 查询的输出(单个记录)合并到单个输出记录中?

mysql - MySQL/PostgreSQL 是否缓存查询的解析/编译?

python - Google App Engine、ReportLab 和 True Type 字体

java - 使用 GSUtil 在本地加载文件