Moshe C. wrote: > > Trying to find out if I hit a bug or it is me doing something wrong. > Using version 0.4.6 > > when creating an object and then calling session.save() I get: > Instance 'res...@-0x486e4074' is already persistent > > It works save_or_update() with, but I don't see why I should use that. > > I did read that using session.mapper can cause this but I use > orm.mapper.
session.save() is only used to persist transient instances. It is deprecated (as is update() and save_or_update()) and not present in version 0.5. Upgrade to at least 0.4.8 if not 0.5 and use session.add() (equivalent to save_or_update()), which eliminates the need for the user to distinguish between transient and detached instances. For a description of what the heck im talking about when i say "transient" and "detached" see http://www.sqlalchemy.org/docs/05/session.html#quickie-intro-to-object-states . > > Here is the mapping code: > > > metadata = sa.MetaData() > sm = orm.sessionmaker(autoflush=True, transactional=True, > bind=engine) > > Model.session = orm.scoped_session(sm) > > person_table = sa.Table('person', metadata, autoload = True, > autoload_with=engine) > person_relative_table = sa.Table('person_relative', metadata, > autoload = True, autoload_with=engine) > resume_table = sa.Table('resume', metadata, autoload = True, > autoload_with=engine) > workplace_table = sa.Table('workplace', metadata, autoload = > True, autoload_with=engine) > resume_workplace_table = sa.Table('resume_workplace', > metadata, autoload = True, autoload_with=engine) > > orm.mapper(self.Person, person_table, properties = { > 'relatives' : orm.relation(self.Person, > secondary=person_relative_table, > > primaryjoin=person_table.c.id==person_relative_table.c.person_id, > > secondaryjoin=person_relative_table.c.relative_id==person_table.c.id, > backref='followers'), > 'resumes' : orm.relation(self.Resume, backref='person') > } > ) > orm.mapper(self.Resume, resume_table, properties = { > 'workplaces' : orm.relation(self.Workplace, > secondary=resume_workplace_table, backref='resumes') > } > ) > orm.mapper(self.Workplace, workplace_table) > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---
