Google App Engineで単一のdb.put()を使用して複数のモデルインスタンスを挿入する

StackOverflow https://stackoverflow.com/questions/803517

  •  03-07-2019
  •  | 
  •  

質問

編集:申し訳ありませんが、これを明確にしていません。これはGoogle App Engine関連の質問です。

これによると、dbを指定できます。 put()モデルインスタンスのリストを作成し、それらをすべてデータストアに入力するように要求します。しかし、私はこれをうまく行うことができませんでした。私はまだPythonに慣れていないため、簡単に操作してください

list_of_models = []
for i in range(0, len(items) - 1):
    point = ModelName()

    ... put the model info here ...

    list_of_models.append(point)

db.put(list_of_models)

どこが間違っているのかを指摘してもらえますか?

役に立ちましたか?

解決

「間違っている」という意味を定義してください-表示している小さなコードは、まったく「正しい」アプリの一部である可能性があります。例:

class Hello(db.Model):
  name = db.StringProperty()
  when = db.DateTimeProperty()

class MainHandler(webapp.RequestHandler):

  def get(self):
    self.response.out.write('Hello world!')
    one = Hello(name='Uno', when=datetime.datetime.now())
    two = Hello(name='Due', when=datetime.datetime.now())
    both = [one, two]
    db.put(both)

これは、getメソッドが呼び出されるたびに2つのエンティティを正しく挿入します。たとえば、サンプルアプリが次のように継続する場合

def main():
  application = webapp.WSGIApplication([('/', MainHandler)],
                                       debug=True)
  wsgiref.handlers.CGIHandler().run(application)


if __name__ == '__main__':
  main()

典型的な「こんにちは世界」のようにアプリエンジンアプリ。 SDKコンソールのデータストアビューアで両方のエンティティが正しく追加されていることを確認できます。もちろん、エンティティを取得して表示する別のハンドラを追加するなどして、

だから明確にしてください!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top