对于在glowscript.org 上找到的应用程序,我在将GAE 从Python 2.5 更新到Python 2.7 时遇到了一个严重问题。我目前正在使用 GAE Launcher 1.7.6 在 Windows 上进行本地测试。
用户可以创建名称包含空格的文件夹,应用程序将空格转换为“%20”以形成数据存储区的密钥;这些文件夹中的文件名也是如此。在glowscript.org 上存在相当数量的用户,他们的数据依赖于这些键。
在尝试本地调试 Python 2.7 版本中的一些奇怪问题时,很明显 GAE 数据存储机制发生了重大变化。假设用户创建了一个名为“Test Cases”的文件夹。与 gloomscript.org 一致,此文件夹名称转换为“Test%20Cases”并用作 PUT 操作中的键:
folder = 'Test%20Cases' f = Folder( parent = username, key_name = folder, public=True ) # Folder 继承自 db.Model f.put()
在使用 Python 2.7 和启动器 1.7.6 运行时,我在日志中看到的是 '%20' 已转换回空格:
“PUT /api/user/test0324k/folder/Test Cases HTTP/1.1” 200 -
当我使用 Python 2.5 和 GAE Launcher 1.7.2 执行相同的操作(本地)时,这就是我在日志中看到的内容:
“PUT /api/user/test0324k/folder/Test%20Cases HTTP/1.1” 200 -
如果我部署到网络上,用户会收到错误,因为他们的数据有包含“%20”的键,现在无法访问这些键。我不能继续使用 Python 2.5 版本,因为它已经被弃用并且很快就会消失。在不破坏许多人的工作的情况下,我能做些什么来继续前进?