Any suggestion helping solving this?

On 25 août, 13:02, Martin-Leon Francois <francois....@gmail.com>
wrote:
> 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