Возможный дубликат:
Как реализовать "автоинкремент" в Google AppEngine
У меня есть приложение Python в AppEngine. Я использую хранилище данных с высокой репликацией.
Это моя проблема:
У меня есть сущность (назовите это Person для простоты), которая сохраняется без родителей, это корневой объект в терминах AppEngine.
Я не задаю ключевое имя перед сохранением моих объектов, потому что мне нужны числовые идентификаторы, назначенные DataStore. Некоторые коды:
p = Person(name='Juan Roman Riquelme')
p.put()
p.key().id() # the numeric ID
Проблема в том, что идентификаторы не последовательны. Каждый раз, когда я обновляю свое приложение (обновление appcfg.py.), Идентификаторы запускаются в следующих тысячах. Я имею в виду, что в первый раз я обновляю свое приложение, ID, где 1,2,3 и т.д. В следующий раз были: 1001 1002 1003 и т.д. Вечность: 2001,2002 и т.д.
Что происходит? Что я должен делать, чтобы держать их подряд?
Благодарю!
Зачем вам нужно, чтобы они были последовательными?
Хранилище данных App Engine не присваивает идентификаторы последовательно.
Если вам нужны последовательные идентификаторы, вы должны сами присваивать идентификаторы. Не забудьте использовать allocate_id_range (http://code.google.com/appengine/docs/python/datastore/functions.html), чтобы механизм приложения автоматически не назначал уже существующие идентификаторы.