Inserimento di più istanze del modello utilizzando un singolo db.put () su Google App Engine
-
03-07-2019 - |
Domanda
Modifica: mi dispiace non aver chiarito questo, si tratta di una domanda relativa a Google App Engine.
Secondo questo , posso dare db. mettere () un elenco di istanze del modello e chiedergli di inserirle tutte nell'archivio dati. Tuttavia, non sono stato in grado di farlo con successo. Sono ancora un po 'nuovo con Python, quindi andate piano con me
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)
Qualcuno potrebbe indicare dove sto sbagliando?
Soluzione
Definisci cosa intendi per "errato". - i minuscoli frammenti di codice che stai mostrando potrebbero benissimo far parte di un'app che è abbastanza "giusta". Considera ad esempio:
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)
questo inserisce correttamente le due entità ogni volta che viene chiamato il metodo get, ad esempio se un'app di esempio continua con:
def main():
application = webapp.WSGIApplication([('/', MainHandler)],
debug=True)
wsgiref.handlers.CGIHandler().run(application)
if __name__ == '__main__':
main()
come in un tipico "ciao mondo" app motore app. Puoi verificare l'aggiunta corretta di entrambe le entità con il visualizzatore di archivi di dati della console sdk, o ovviamente aggiungendo un altro gestore che recupera le entità e le mostra, ecc. Ecc.
Quindi, per favore, chiarisci!