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.

Reply via email to