Ich möchte eine Instanz einer Klasse von meiner Sitzung trennen, sie sollte jedoch weiterhin zum Lesen verfügbar sein (ohne eine Abfrage auszugeben). Ich habe jetzt Tage die Dokumentation Scannen durch, aber jeder Ansatz, den ich versuche, führt zu der NachrichtTrennen der SQLAlchemy-Instanz, so dass keine Aktualisierung stattfindet
DetachedInstanceError: Instance <MyModel at 0x36bb190> is not bound to a Session;
attribute refresh operation cannot proceed
ich mit dem zope.sqlalchemy
Transaktions-Manager bei Pyramid arbeite. Ich möchte, dass mein Objekt verwendbar ist nach die Transaktion wurde festgeschrieben. Ich brauche es nur, um den "zwischengespeicherten" Wert zu lesen, d. H. Diejenigen, die vor dem Commit der Transaktion darin waren.
Die einzige Möglichkeit, die ich herausfinden konnte, war, die Klasse (oder die Attribute selbst) zu wickeln und dann Änderungen manuell zu verfolgen (ich könnte das tun, aber es ist wirklich hässlich und überhaupt nicht pythonisch).
Gibt es eine Möglichkeit, SQLAlchemy daran zu hindern, diese Werte zu aktualisieren?
Als Absicherung ich auch offen sein würde, nur None
zurückkehren, solange der obige Fehler nicht nach der Transaktion geworfen bekommen als
Welche Art von Attribut versuchen Sie zu lesen? – benselme
Es ist ein 'PickleType', der durch meine eigene' MutableDict.as_mutable() '-Funktion veränderbar gemacht wird.Aber es scheint, sobald ein Festschreiben passiert, werden alle Daten aus den Zuständen entfernt, so dass Sie abfragen müssten, was auch immer Sie wollen (könnte aber hier falsch sein ...) – javex