AppEngine - Странное присвоение идентификатора в AppEngine HR DataStore

1

Возможный дубликат:
Как реализовать "автоинкремент" в 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 и т.д.

Что происходит? Что я должен делать, чтобы держать их подряд?

Благодарю!

  • 1
    Посмотрите на этот вопрос.
  • 0
    Спасибо Кевину. Это действительно полезно.
Показать ещё 3 комментария
Теги:
flask
google-app-engine
google-cloud-datastore

1 ответ

3

Зачем вам нужно, чтобы они были последовательными?

Хранилище данных App Engine не присваивает идентификаторы последовательно.

Если вам нужны последовательные идентификаторы, вы должны сами присваивать идентификаторы. Не забудьте использовать allocate_id_range (http://code.google.com/appengine/docs/python/datastore/functions.html), чтобы механизм приложения автоматически не назначал уже существующие идентификаторы.

  • 0
    Я нуждаюсь в них подряд. Я посмотрю на это. Спасибо!
  • 0
    @santiagobasulto Почему они нужны вам последовательно? На самом деле это редко так, и попытка сделать это по своей сути не масштабируема - вы позволяете себе путаницу проблем, если пытаетесь.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню