Problem mit SqlAlchemy - "Übergeordnete Instanz SomeClass ist nicht an eine Sitzung gebunden; Lazy-Load-Betrieb ... "

8

Ich habe einen kleinen Spar-Server in Python, den ich für schnelle Suchvorgänge verwende. Der Server fragt mysql über SqlAlchemy bei der ersten Anfrage ab und schiebt alle zurückgegebenen Objekte in ein Verzeichnis, so dass bei nachfolgenden Anfragen kein DB-Aufruf benötigt wird. Ich bekomme nur das Objekt vom Diktat und rufe dann einige der Objektmethoden auf, die benötigt werden, um die richtige Antwort zu geben.

Zunächst ist alles in Ordnung. Nachdem der Server eine Weile ausgeführt wird, erhalte ich diese Ausnahme beim Zugriff auf die sqlalchemy-Objektmethoden:

  
    

Übergeordnete Instanz ist nicht an eine Sitzung gebunden; Lazy Load-Operation des Attributs 'rate' kann nicht fortgesetzt werden.

  

Seltsam, weil ich eagerload('rate') eingestellt habe.

Ich kann nicht wirklich ein Muster für dieses Verhalten sehen, es betrifft nur einige Objekte. Sobald es jedoch ein Objekt betrifft, wird es dies weiterhin bei jeder Anforderung tun, bis ich meinen Python-Server neu starte.

Irgendwelche Ideen?

    
Tony 23.11.2010, 05:52
quelle

1 Antwort

7

Wahrscheinlich werden Objekte zwischen den Anforderungen zwischengespeichert. Wenn die Festschreibung erfolgt, wird das Sitzungsobjekt gelöscht und Ihre Objekte werden ungültig. Wenn Sie Ihren Server über einen Multithread-Webserver starten, der Mitarbeiter nach Bedarf startet, erklärt das, warum es kein Muster gibt. Wenn Sie das nicht wollen und nur eine schnelle Lösung benötigen, wird dies immer funktionieren:

%Vor%

Die richtige Lösung wäre, sicherzustellen, dass Sie Objekte nicht zwischen Anfragen zwischenspeichern.

    
letitbee 20.05.2011 10:24
quelle

Tags und Links