Dies ist erforderlich, wenn Sie Informationen zur Eltern-Kind-Beziehung von Daten in die Datenbank eingeben möchten. Beispielsweise kann ein Hotel mit mehreren Zimmern verbunden sein, oder mit einem Service können mehrere Pläne verbunden sein.
Die wichtigen Punkte sind die folgenden zwei Punkte.
session.add(parent_record) #Registrieren einer Transaktion
session.fluhs() #In der DB registriert (nicht gespeichert)
parent_id = parent_record.id #Übergeordnete ID abrufen
Zum Zeitpunkt von session.add (Datensatz) wurde die ID der übergeordneten Daten nicht zugewiesen, sodass sie nicht abgerufen werden können. Wenn Sie session.flush () ausführen, wird die übergeordnete ID angegeben und Sie können sie abrufen.
session.add(parent_record)
session.commit() #Registriert in DB (gespeichert)
parent_id = parent_record.id #Übergeordnete ID abrufen
Es kann mit session.commit () in der Datenbank gespeichert und abgerufen werden, da die übergeordnete ID zugewiesen ist. Da der in wichtigem Punkt 2 erwähnte Rollback jedoch nicht durchgeführt werden kann, tritt bei einem Fehler beim Speichern mit untergeordneten Daten nur die übergeordneten Daten auf, was bei der Registrierung untergeordneter Daten Zeit und Mühe kostet. Ich werde am Ende. (Zum Beispiel manuelles Zuweisen einer übergeordneten ID) Wenn möglich, sind Einfügungen effizienter, wenn die übergeordneten und untergeordneten Daten in derselben Sitzung festgeschrieben werden.
Recommended Posts