use "all, delete" cascade but not "delete-orphan".

On Jan 28, 1:06 pm, Gloria W <strang...@comcast.net> wrote:
> Hi again,
> I have a problem with a cascade relation. Any help or clues would be
> greatly appreciated.
>
> I have a model which has this relation:
>
>  member = relation(Member,lazy=False,backref=backref
> ('members',order_by=memberID),cascade="all, delete, delete-orphan")
>
> When this cascade is active, it cause this insert to fail:
>
>   def PUT(self,memberid,fields=None):
>     memberProfile = MemberProfile(memberID=memberid)
>     self.session.add(memberProfile)
>
>     if fields:
>       for field,value in fields.iteritems():
>         try:
>           setattr(memberProfile,field,value)
>         except:
>           self.session.rollback()
>           raise
>
>       self.session.commit()
>
> with this error:
>
> Traceback (most recent call last):
>   File "MemberInfo.py", line 93, in ?
>     x.PUT(999999,{'firstname':'Gloria','lastname': 'W', 'password':
> '123456789', 'city':'anywhere', 'phonehome': 'xxxxxxxxxx','question':
> 'what?','answer':'.','lockoutflag':False,'deleteflag':False,
> 'activeflag':True, 'insuranceflag':False,'applicationstatusID':1})
>   File "MemberInfo.py", line 67, in PUT
>     self.session.commit()
>   File "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/
> sqlalchemy/orm/session.py", line 670, in commit
>     self.transaction.commit()
>   File "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/
> sqlalchemy/orm/session.py", line 375, in commit
>     self._prepare_impl()
>   File "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/
> sqlalchemy/orm/session.py", line 359, in _prepare_impl
>     self.session.flush()
>   File "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/
> sqlalchemy/orm/session.py", line 1354, in flush
>     self._flush(objects)
>   File "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/
> sqlalchemy/orm/session.py", line 1407, in _flush
>     raise exc.FlushError(
> sqlalchemy.orm.exc.FlushError: Instance <MemberProfile at 0x-489b1a34>
> is an unsaved, pending instance and is an orphan (is not attached to
> any parent 'MemberProfile' instance via that classes' 'member'
> attribute)
>
> When I change the relation back to this:
>
> member = relation(Member,lazy=False,backref=backref
> ('members',order_by=memberID))
>
> My insert works, but my delete, appearing below:
>
>   def DELETE(self,memberid,fields=None):
>     memberProfile = MemberProfile(memberID=memberid)
>     self.session.delete(memberProfile)
>
> Fails with this error:
>
> Traceback (most recent call last):
>   File "MemberInfo.py", line 95, in ?
>     x.DELETE(999999)
>   File "MemberInfo.py", line 71, in DELETE
>     self.session.delete(memberProfile)
>   File "/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.0rc4-py2.4.egg/
> sqlalchemy/orm/session.py", line 1135, in delete
>     raise sa_exc.InvalidRequestError(
> sqlalchemy.exc.InvalidRequestError: Instance '<MemberProfile at
> 0x-48976194>' is not persisted
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to