Как правильно расправить с Python 2.7, что было протравлено с помощью 2.5? - PullRequest
1 голос
/ 16 февраля 2012

Я мигрирую веб-приложение из среды выполнения Python 2.5 в Python 2.7.Мое приложение хранит засоленные данные в базе данных, и при распаковке того, что я хранил, у меня возникают некоторые проблемы с длинными целыми числами:

Int, такой как 100003087328067, засоленный с помощью Python 2.5, становится непарным в 2147483647 (что 2 ^ 311) в Python 2.7.

Как получить правильное значение?

Могут ли быть другие проблемы?С кодировкой str например?(Я нашел это, но это с Python 3: Отмена выбора данных, собранных в Python 2.5, в Python 3.1, затем распаковка с помощью zlib )

Подробнее о моем контексте: я переношу GoogleПриложение App Engine, и я сохранил свои данные, используя пользовательский db.Property, который немного похож на NDB PickleProperty.

1 Ответ

5 голосов
/ 16 февраля 2012

Я бы предложил двухэтапную настройку:

Напишите скрипт Python 2.5 для распаковки текущих значений, сохраните их в общем формате, таком как JSON, а затем прочтите его обратно в приложение Python 2.7.

В идеале, продолжайте использовать формат, такой как JSON, а не травление, чтобы в будущем он не зависел от платформы.Более того, сохраняйте данные в базе данных как правильно нормализованные данные, чтобы их можно было использовать еще проще.

...