Hi,
I am trying in the same session to detach an instance from a collection ( one
to many)
flush and commit everything (all is ok) and then attach the removed instance
again. unsuccessfully.
in below code, last assert fails.
I don't understand why I am not able to append m2 to o1.to_many collection once
removed.
Any idea? ( I use sa 0.5.6)
thanx, Francois
meta = MetaData()
tb_one = Table(one, meta,
Column('name',String(50)),
Column('id',Integer, primary_key=True))
tb_many = Table(many, meta,
Column('name',String(50)),
Column('id',Integer, primary_key=True),
Column('one_id', Integer,
ForeignKey(tb_one.c.id,ondelete='CASCADE'), nullable=False),)
class One(object):
def __init__(self, name):
self.name = name
class Many(object):
def __init__(self, name):
self.name = name
mapper_one = mapper(One,tb_one)
mapper_many = mapper(Many, tb_many,
properties = dict(
to_one = relation(One,uselist=False,
backref=backref('to_many', cascade=save-update, merge, delete,
delete-orphan),)))
engine = create_engine()
Session = orm.sessionmaker(autoflush=True, autocommit=False, bind=engine)
meta.bind = engine
meta.drop_all(checkfirst=True)
meta.create_all(checkfirst=True)
s = Session()
m1 = Many(M1)
m2 = Many(M2)
o1 = One(One)
o1.to_many.append(m1)
o1.to_many.append(m2)
s.add_all([m1,m2,o1])
s.flush()
s.commit()
assert(len(o1.to_many) == 2)
o1.to_many.remove(m2)
assert(len(o1.to_many) == 1)
s.flush()
s.commit()
assert(len(o1.to_many) == 1)
o1.to_many.append(m2)
assert(len(o1.to_many) == 2)
s.flush()
s.commit()
assert(len(o1.to_many) == 2) #this assert fails why?
s.close()
--
You received this message because you are subscribed to the Google Groups
sqlalchemy group.
To post to this group, send email to sqlalch...@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.