在Google App Engine中使用单个db.put()插入多个模型实例

3 投票
1 回答
1410 浏览
提问于 2025-04-15 11:18

补充说明:抱歉我没有说明清楚,这个问题和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)

有没有人能告诉我哪里出错了?

1 个回答

4

请你解释一下“出错”具体指的是什么——你展示的那些小代码片段可能正好是一个运行正常的应用程序的一部分。例如:

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)

每次调用这个获取方法时,它确实会正确地插入这两个实体,比如说如果一个示例应用继续这样做:

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


if __name__ == '__main__':
  main()

就像一个典型的“你好,世界”应用程序一样。你可以通过sdk控制台的数据库查看器来验证这两个实体是否正确添加,或者当然也可以添加另一个处理程序来获取这些实体并显示出来,等等等等。

所以请你进一步说明一下!

撰写回答