Ich habe Probleme mit dem Löschen von Zeilen aus einer Datenbank und dem Hinzufügen neuer Zeilen. Hier ist der Code:SQLAlchemy - ObjectDeletedError: Instanz '<Class at...>' wurde gelöscht. Hilfe
Grundsätzlich lösche ich alle Benutzerdaten aus der Tabelle und fügen Sie dann in ihren neuen Optionen hinzu. Das Problem ist, erzeugt der Code diese Fehler:
ObjectDeletedError: Instance '<Responsibilities at ...>' has been deleted.
Ich habe keine Ahnung, warum ... Von dem, was meine Google-Suchen gedreht haben bis der Fehler erzeugt wird, weil ich die Verantwortung Klasse bin Modifizieren schließlich gelöscht hat es sind Daten aus der Datenbank. Ich kann nicht herausfinden, wie ich die Klasse loslassen soll, um sie mit den neuen Daten neu zu initialisieren.
Was mache ich falsch?
EDIT
Hier ist die Verantwortung Klasse:
class Responsibilities(Base):
__tablename__ = 'responsibilities'
id = Column(Integer, primary_key=True)
userid = Column(Integer, ForeignKey('users.id'))
positionid = Column(Integer)
responsibility = Column(String(50))
def __init__(self, user=None):
if user:
self.userid = user
def __repr__(self):
return "<Responsibilities({0})".format(self.userid)
Und hier ist die Zurückverfolgungs:
File '<string>', line 2 in save
File 'C:\\Users\\Dave\\Documents\\Python\\pylons\\mydevenv\\lib\\site-packages\\pylons-1.0-py2.6.egg\\pylons\\decorators\\rest.py', line 33 in check_methods
return func(*args, **kwargs)
File 'C:\\Users\\Dave\\Documents\\Python\\pylons\\website\\website\\controllers\\myaccount.py', line 260 in save
self.__deleterow(dbmyaccount.Responsibilities, session['authed']['userid'])
File 'C:\\Users\\Dave\\Documents\\Python\\pylons\\website\\website\\controllers\\myaccount.py', line 210 in __deleterow
Session.query(table).filter_by(userid=user).delete()
File 'C:\\Users\\Dave\\Documents\\Python\\pylons\\mydevenv\\lib\\site-packages\\sqlalchemy-0.6.3-py2.6.egg\\sqlalchemy\\orm\\query.py', line 2031 in delete
eval_condition(obj)]
File 'C:\\Users\\Dave\\Documents\\Python\\pylons\\mydevenv\\lib\\site-packages\\sqlalchemy-0.6.3-py2.6.egg\\sqlalchemy\\orm\\evaluator.py', line 82 in evaluate
left_val = eval_left(obj)
File 'C:\\Users\\Dave\\Documents\\Python\\pylons\\mydevenv\\lib\\site-packages\\sqlalchemy-0.6.3-py2.6.egg\\sqlalchemy\\orm\\evaluator.py', line 42 in <lambda>
return lambda obj: get_corresponding_attr(obj)
File 'C:\\Users\\Dave\\Documents\\Python\\pylons\\mydevenv\\lib\\site-packages\\sqlalchemy-0.6.3-py2.6.egg\\sqlalchemy\\orm\\attributes.py', line 163 in __get__
instance_dict(instance))
File 'C:\\Users\\Dave\\Documents\\Python\\pylons\\mydevenv\\lib\\site-packages\\sqlalchemy-0.6.3-py2.6.egg\\sqlalchemy\\orm\\attributes.py', line 382 in get
value = callable_(passive=passive)
File 'C:\\Users\\Dave\\Documents\\Python\\pylons\\mydevenv\\lib\\site-packages\\sqlalchemy-0.6.3-py2.6.egg\\sqlalchemy\\orm\\state.py', line 280 in __call__
self.manager.deferred_scalar_loader(self, toload)
File 'C:\\Users\\Dave\\Documents\\Python\\pylons\\mydevenv\\lib\\site-packages\\sqlalchemy-0.6.3-py2.6.egg\\sqlalchemy\\orm\\mapper.py', line 2441 in _load_scalar_attributes
state_str(state))
ObjectDeletedError: Instance '<Responsibilities at ...>' has been deleted.
Könnten Sie auch __init__' von 'dbmyaccount.Responsibilities' zeigen' und sagen Welche Zeile löst eine Ausnahme aus? –
Aktualisieren Sie meinen ursprünglichen Beitrag mit den von Ihnen angeforderten Informationen – dave
Noch kann diesen Fehler hier nicht reproduzieren, Ihr Code funktioniert gut in meinen Tests. Welche Version von SA verwenden Sie? –