我发现这很有趣,并且很好奇为什么数据库键的顺序与字符串不同..
如果您在 Python 开发环境中测试以下示例(对于服务器也是如此),您将看到以下(有些意外)行为
str1 = 'agpyb21hbmNlYXBwchILEglVc2VyTW9kZWwY4-agBgw'
str2 = 'agpyb21hbmNlYXBwchILEglVc2VyTW9kZWwYkoWBBQw'
结果:str < str2
是 TRUE
但是,如果我们执行以下操作
key1 = db.Key(str1)
key2 = db.Key(str2)
结果:key1 < key2
是 FALSE
最佳答案
您要比较的是字符串编码的 key ,这些 key 已通过 base64
传递,以便安全地作为文本输出。 Base64 不保留字符串顺序。如果您使用 base64.urlsafe_b64decode
对它们进行解码,它们将按照您期望的顺序进行比较。
关于python - 为什么 appengine 数据库键的排序方式与字符串不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7572386/