Ich habe den folgenden Code:
%Vor%Und ich erhalte den folgenden Fehler:
%Vor% Es scheint mir, dass meine __init__
-Methode nicht ausgeführt wird, da ich keine print-Anweisungen in meinem Protokoll sehen kann.
Kann jemand erklären, warum mein __init__
nicht ausgeführt wird und was kann ich dafür tun?
Lesen Sie die SQLAlchemy-Dokumentation zur Rekonstruktion :
%Vor%Das SQLAlchemy-ORM ruft
__init__
nicht auf, wenn Objekte neu erstellt werden Datenbankzeilen. Der Prozess des ORM ähnelt dem Python das Essiggurkenmodul der Standardbibliothek, wobei die niedrige Stufe__new__
aufgerufen wird Methode und dann ruhig Attribute direkt auf der Instanz wiederherstellen anstatt__init__
aufzurufen.Wenn Sie zuvor einige Einstellungen für datenbankgeladene Instanzen vornehmen müssen Sie können sie verwenden, Sie können den @reconstructor-Decorator zum Markieren verwenden eine Methode als ORM-Gegenstück zu
zugewiesen sind__init__
. SQLAlchemy wird dies aufrufen Methode mit keinen Argumenten, jedes Mal, wenn es eins von lädt oder rekonstruiert Ihre Instanzen. Dies ist nützlich, um Übergangseigenschaften neu zu erstellen die normalerweise in Ihrem__init__
:
Wenn obj = MyMappedClass () ausgeführt wird, ruft Python
__init__
auf Methode als normal und das Datenargument ist erforderlich. Wenn Instanzen sind während einer Query-Operation wie in Abfrage (MyMappedClass) .one () geladen,init_on_load
wird aufgerufen.
Tags und Links python sqlalchemy