Ich arbeite an einer Bibliothek, in der der Benutzer einfach einige Klassen deklarieren kann, die automatisch von der Datenbank gesichert werden. Kurz gesagt, irgendwo im Code versteckt, gibt es
%Vor%und der Benutzer sollte dann tun
%Vor%In einer statischen Umgebung, z.B. der Benutzer hat eine Datei mit allen persönlichen Klassen erstellt und importiert diese Datei, das funktioniert ziemlich gut. Alle Klassennamen sind festgelegt und SQLAlchemy kann jede Klasse zuordnen.
In einer interaktiven Umgebung sind die Dinge anders: Jetzt besteht die Möglichkeit, dass eine Klasse zweimal definiert wird. Beide Klassen können unterschiedliche Module haben; aber immer noch wird sich SQLAlchemy beschweren:
SAWarning: Der Klassenname 'MyStuff' befindet sich bereits in der Registrierung dieser deklarativen Basis, zugeordnet zu & lt; Klasse 'OtherModule.MyStuff' & gt;
Gibt es einen Weg, damit umzugehen? Kann ich eine Klasse aus ihrer declarative_base
irgendwie entladen , damit ich ihre Definition durch eine neue ersetzen kann?
Sieht so aus, und ich bin mir nicht sicher, ob das überhaupt funktioniert, aber ich denke, was Sie wollen, ist
sqlalchemy.orm.instrumentation.unregister_class()
Tags und Links python class sqlalchemy mapping declarative