Why is assignment of a transient parent object does not automatically add 
this parent object into the session? But Parent.append(PersistedChild) will 
do the job nicely?
Here is my code:

from sqlalchemy import Column, String, Integer, ForeignKey
> from sqlalchemy import create_engine
> from sqlalchemy.orm import sessionmaker
> from sqlalchemy.orm import relationship, backref
> from sqlalchemy.ext.declarative import declarative_base
>
> Base = declarative_base()
>
> class Department(Base):
>     __tablename__ = 'department'
>     id = Column(Integer, primary_key=True)
>     name = Column(String)
>
> class Employee(Base):
>     __tablename__ = 'employee'
>     id = Column(Integer, primary_key=True)
>     name = Column(String)
>     department_id = Column(Integer, ForeignKey('department.id'))
>     department = relationship(Department, backref=backref('employees', 
> uselist=True))
>
> engine = create_engine('sqlite:///')
> session = sessionmaker()
> session.configure(bind=engine)
> Base.metadata.create_all(engine)
> s = session()
> john = Employee(name='john')
> it_department = Department(name='IT')
> print(john in s) # should be False
> print(it_department in s) # should be False
> s.add(john)
> print(john in s) # should be True
> print(it_department in s) # should be False
> john.departments = it_department # here I expect it_department(the Parent 
> Object) would be automatically added to s in a cascade way, because of the 
> backref
> print(john in s) # should be True
> print(it_department in s) # should be True, however this is not true.


-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to