Die Tabelle 'roles_users' ist bereits für diese MetaData-Instanz definiert

8

Hallo iam versucht, eine currnet_user Informationen in meinen Ansichten zu erhalten

und ich schließe von users.models import *

ein

dann in meinem Code zurückgeben current_user;

%Vor%

und nachdem ich meinen Server gestartet habe, heißt es

%Vor%

und in meinem Modell habe ich

%Vor%

und bis jetzt habe ich nicht verstanden, warum iam diesen Fehler bekommt und wie man ihn genau löst, bitte leite mich, um das Problem zu lösen

    
TheBlueDragon 19.06.2016, 15:18
quelle

3 Antworten

0

Ich sah den gleichen Fehler mit Jupyter Notebook. Ich habe sqlalchemy-Tabellenklassen aus einer Bibliothek importiert, die auf der Festplatte gespeichert ist, und es gab einen Fehler in der Definition. Nachdem ich den Fehler behoben hatte, führte ich den Import erneut durch und sah diesen Fehler. Einfach den Jupyter-Kernel neu starten und dann den Import erneut ausführen, das Problem wurde behoben.

    
Scott McCormick 22.06.2017 13:26
quelle
0

Das hängt davon ab, was Sie tun möchten. Versuchen Sie Folgendes:

  1. lösche die alte Klasse und repaliere sie mit einer neuen Klassenzuordnung? Oder,
  2. Behalten Sie die alte Klasse bei und starten Sie Ihre App einfach neu?

Im ersten Fall, in dem Sie Ihr Beispiel oben verwenden, sollten Sie vor dem Definieren der Klassen die folgende Zeile ausführen:

%Vor%

Der Grund ist, dass Sie zum ersten Mal eine SQLAlchemy-Zuordnung deklarieren, indem Sie eine Python-Klasse definieren. Die Definition der Klasse wird im Metadatenobjekt gespeichert, um Konflikte zu vermeiden, die durch die Zuordnung mehrerer Definitionen zur gleichen Tabelle verursacht werden. p>

Wenn Sie die clear() -Methode aufrufen, löschen Sie alle Tabellendefinitionen, die im Speicher des Metadata-Objekts gespeichert sind. Dadurch können Sie sie erneut deklarieren.

Im zweiten Fall, wenn Sie die App gerade neu starten Ich würde einen Test schreiben, um zu sehen, ob die Tabelle bereits existiert, indem ich die Methode reflect verwende:

%Vor%

Wo engine ist Ihre Db-Verbindung erstellt mit create_engine() , und sehen, ob Ihre Tabellen bereits vorhanden sind und nur die Klasse definieren, wenn die Tabelle nicht definiert ist.

    
Spcogg the second 26.03.2018 11:18
quelle
-4

Fügen Sie einfach extend_existing = True für roles_users wie unten gezeigt hinzu

%Vor%     
Naveen Kumar 18.05.2017 08:44
quelle

Tags und Links