Есть ли функция, чтобы проверить, доступен ли идентификатор, который вы хотите использовать для объекта? - PullRequest
0 голосов
/ 20 января 2012

Я думаю, что прочитал кое-что о функции, которую имеет appengine, которая может сказать, доступен ли ID / ключ, который вы хотите использовать для объекта, или была ли функция для выбора доступного ID. Команда разработчиков приложений также сказала, что мы должны установить идентификатор при создании объекта, а не изменять его. Но на практике мы можем просто скопировать все в новую сущность с новым идентификатором?

Спасибо!

Обновление

Я думаю, что функция, которую я ищу, это allocateIDs из документов: http://code.google.com/appengine/docs/python/datastore/functions.html

Ответы [ 2 ]

1 голос
/ 22 января 2012

Чтобы зарезервировать один или несколько идентификаторов, используйте allocate_ids ().Чтобы проверить, был ли идентификатор уже взят, просто создайте для него ключ, используя Key.from_path (kind, id) и попробуйте db.get ().Также обратите внимание, что идентификаторы для ключей с родителем взяты из отдельных пулов и являются уникальными только среди ключей с одним и тем же родителем.

1 голос
/ 20 января 2012

На странице, описывающей транзакции , представлен вариант использования, в котором обновляется рассматриваемая сущность SalesAccount или, если учетная запись не существует, она создается вместо этого. Техника состоит в том, чтобы просто попытаться загрузить сущность с заданным ключом; и если он ничего не возвращает, создайте его. Важно сделать это внутри транзакции, чтобы избежать ситуации, когда два пользователя гоняются за одним и тем же ключом, и оба видят, что его не существует (и оба пытаются его создать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...