我正在将 Web 应用程序从 Python 2.5 运行时迁移到 Python 2.7。 我的应用程序将 pickle 数据存储到数据库中,并且在取消 pickle 我存储的数据时,我遇到了一些长整数问题:
像 100003087328067 这样的 int,使用 Python 2.5 进行 pickle,在 Python 2.7 下被 unpickle 为 2147483647(即 2^31-1)。
如何取回正确的值?
会不会有其他问题?例如使用 str 编码? (我找到了这个,但它与 python 3 一起使用:Unpicking data pickled in Python 2.5, in Python 3.1 then uncompressing with zlib)
更多关于我的背景: 我正在迁移一个 Google App Engine 应用程序,我使用一个自定义的 db.Property 存储我的数据,它的行为有点像 NDB PickleProperty。
最佳答案
我建议采用两阶段设置:
编写一个 Python 2.5 脚本来 unpickle 当前值,使用 JSON 等通用格式存储它们,然后将其读回 Python 2.7 应用。
理想情况下,继续使用像 JSON 这样的格式而不是 pickling,这样它将来就不会依赖于平台。更好的是,将数据作为适当规范化的数据存储在数据库中,因此可以更轻松地使用它。
关于python - 如何使用 Python 2.7 正确解开使用 2.5 pickle 的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9313050/