1

古いデータストアでは、キーを使用しました。ここで、ID を使用する必要があります ( NDB Cheat Sheet docから取得):

user = User.get_by_id(user_id)
if user is None:
    user = User(id=user_id)

しかし、このコードは機能しないようです - レコードが数回追加されます。

(私の場合、user_idは文字列です)

4

3 に答える 3

4

理由がわかりました。上記のコードは正しいのですが、クラスには id プロパティが含まれていました。

class User(ndb.Model):
    id = ndb.StringProperty() 

そしてそれが問題でした。

于 2012-07-11T15:35:45.353 に答える
1

トランザクション操作が必要なようです。

user = User.get_or_insert(user_id)
于 2012-07-11T02:29:43.057 に答える
1

NDB チート シートの「キーの作成」セクションを参照してください。

user = ndb.Key('User', user_id).get()
if user is None:
  user = User(id=user_id)

またはこれを試して、うまくいくかどうか教えてください:

user = User.get_by_id(user_id)
  if user is None:
  user = User(id=user_id)

ところで、たとえ user_id が使用すべき文字列であっても'%s' % user_id

于 2012-07-11T01:56:41.247 に答える