如何使用2.5正确地解决使用2.5进行腌制的问题?

时间:2012-02-16 14:30:50

标签: python google-app-engine python-2.7 pickle python-2.5

我正在将Web应用程序从Python 2.5运行时迁移到Python 2.7。 我的应用程序将pickle数据存储到数据库中,当取消我存储的内容时,我遇到了一些长整数问题:

使用Python 2.5进行pickle的像100003087328067这样的int在Python 2.7下被改为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。

1 个答案:

答案 0 :(得分:5)

我建议进行两阶段设置:

编写一个Python 2.5脚本来取消当前值的解开,用JSON之类的通用格式存储它们,然后将其读回到Python 2.7应用程序中。

理想情况下,继续使用JSON等格式而不是酸洗,以便将来不依赖于平台。更好的是,将数据存储在数据库中作为正确规范化的数据,因此可以更容易地使用它。