Inserción de múltiples instancias de modelo utilizando un solo db.put () en Google App Engine

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Editar: Lo siento, no aclaré esto, es una pregunta relacionada con Google App Engine.

Según esto , puedo dar db. ponga () una lista de instancias del modelo y pídale que las ingrese todas en el almacén de datos. Sin embargo, no he podido hacer esto con éxito. Todavía soy un poco nuevo con Python, así que no lo dudes,

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)

¿Alguien podría indicar dónde me voy mal?

¿Fue útil?

Solución

Por favor, defina lo que quiere decir con " salir mal " - las diminutas piezas de código que estás mostrando podrían perfectamente ser parte de una aplicación que está muy bien "a la derecha". Considera, por ejemplo:

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)

esto inserta las dos entidades correctamente cada vez que se llama al método get, por ejemplo, si una aplicación de ejemplo continúa con:

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


if __name__ == '__main__':
  main()

como en un típico "hola mundo" aplicación del motor de la aplicación. Puede verificar la adición correcta de ambas entidades con el visor del almacén de datos de la consola sdk o, por supuesto, agregando otro controlador que recupere las entidades y las muestre, etc. etc.

¡Por favor, aclaren!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top