Google App Engine で、データ テーブルの一意のキーを作成したいと考えています。thisで示唆されているように、私は次のことをしようとしています:
Message というモデルがあり、フィールド値が Web ページから次のように取得されるとします。
message = db.Message()
message.name = self.request.get('name')
message.email = self.request.get('email')
...
message.put()
message.messageId = message.key().id()
message.put()
2 つの質問があります。
これは一意の ID (messageId) を作成する正しい方法ですか? つまり、最初にエンティティを配置し、その ID を取得して messageId に割り当て、最後にもう一度配置しますか? 奇妙に見えます。
同時実行の問題を防ぐ方法は? 次のように「トランザクション」を使用できることを知っています。
@db.transactional def storeEntity(): message.name = self.request.get('name') message.email = self.request.get('email') ... message.put() message.messageId = message.key().id() message.put()
しかし、このトランザクションが失敗した場合はどうなるでしょうか? 成功するまではどうすればいいですか?前もって感謝します。