def get_bookmark_of_user_id_for_write(user_id): #データストアから実体を読込(書き込み用) bookmark=None try: bookmark=db.Query(Bookmark,keys_only=True).filter("user_id =",user_id) except: return None count=bookmark.count(limit=2) if(count>=2): #keynameの設定でduplicateは起きなくなったはず logging.error("bookmark duplicate error user_id="+str(user_id)) #もし起きる場合は古いデータなので以下で削除のこと #duplicate_bookmark=bookmark.fetch(2) #db.get(duplicate_bookmark[1]).delete() #logging.error("deleted duplicated one") if(count==0): #同じuser_idでduplicateが起きないようにするためにkey_nameを設定 #昔のbookmarkにはkey_nameは設定していないので注意 bookmark=Bookmark(key_name=BbsConst.KEY_NAME_BOOKMARK+user_id) bookmark.user_id=user_id bookmark.put() else: bookmark=bookmark.fetch(1) bookmark=db.get(bookmark[0]) #強い整合性を保証 return ApiObject.set_list_if_empty(bookmark);