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

时间:2009-04-29 17:53:26

标签: python google-app-engine

修改:抱歉,我没有澄清这一点,这是与Google App Engine相关的问题。

根据this,我可以给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 个答案:

答案 0 :(得分: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)

每次调用get方法时都会正确插入两个实体,例如,如果示例应用程序继续执行:

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


if __name__ == '__main__':
  main()

与典型的“hello world”app引擎应用程序一样。您可以使用sdk控制台的数据存储区查看器验证两个实体的正确添加,或者当然是通过添加另一个处理器来获取实体并显示它们等等。

所以请澄清!