In [1]: p = People.by_username('mmcgrath') In [2]: p.emails['primary'].email Out[2]: 'mmcgrath@redhat.com' In [3]: p.emails['primary'].email = 'toshio@redhat.com' In [4]: session.flush() --------------------------------------------------------------------------- FlushError Traceback (most recent call last) /home/mmcgrath/git/fedora-infrastructure/fas/ in () /usr/lib/python2.5/site-packages/sqlalchemy/orm/scoping.py in do(self, *args, **kwargs) 72 def instrument(name): 73 def do(self, *args, **kwargs): ---> 74 return getattr(self.registry(), name)(*args, **kwargs) 75 return do 76 for meth in ('get', 'load', 'close', 'save', 'commit', 'update', 'save_or_update', 'flush', 'query', 'delete', 'merge', 'clear', 'refresh', 'expire', 'expunge', 'rollback', 'begin', 'begin_nested', 'connection', 'execute', 'scalar', 'get_bind', 'is_modified', '__contains__', '__iter__'): /usr/lib/python2.5/site-packages/sqlalchemy/orm/session.py in flush(self, objects) 681 """ 682 --> 683 self.uow.flush(self, objects) 684 685 def get(self, class_, ident, **kwargs): /usr/lib/python2.5/site-packages/sqlalchemy/orm/unitofwork.py in flush(self, session, objects) 207 flush_context.transaction = session.transaction 208 try: --> 209 flush_context.execute() 210 211 if session.extension is not None: /usr/lib/python2.5/site-packages/sqlalchemy/orm/unitofwork.py in execute(self) 434 self.logger.info("Task dump:\n" + head.dump()) 435 if head is not None: --> 436 UOWExecutor().execute(self, head) 437 if self._should_log_info: 438 self.logger.info("Execute Complete") /usr/lib/python2.5/site-packages/sqlalchemy/orm/unitofwork.py in execute(self, trans, task, isdelete) 1053 def execute(self, trans, task, isdelete=None): 1054 if isdelete is not True: -> 1055 self.execute_save_steps(trans, task) 1056 if isdelete is not False: 1057 self.execute_delete_steps(trans, task) /usr/lib/python2.5/site-packages/sqlalchemy/orm/unitofwork.py in execute_save_steps(self, trans, task) 1072 self.execute_dependencies(trans, task, False) 1073 self.execute_dependencies(trans, task, True) -> 1074 self.execute_childtasks(trans, task, False) 1075 1076 def execute_delete_steps(self, trans, task): /usr/lib/python2.5/site-packages/sqlalchemy/orm/unitofwork.py in execute_childtasks(self, trans, task, isdelete) 1090 def execute_childtasks(self, trans, task, isdelete=None): 1091 for child in task.polymorphic_childtasks: -> 1092 self.execute(trans, child, isdelete) 1093 1094 def execute_cyclical_dependencies(self, trans, task, isdelete): /usr/lib/python2.5/site-packages/sqlalchemy/orm/unitofwork.py in execute(self, trans, task, isdelete) 1053 def execute(self, trans, task, isdelete=None): 1054 if isdelete is not True: -> 1055 self.execute_save_steps(trans, task) 1056 if isdelete is not False: 1057 self.execute_delete_steps(trans, task) /usr/lib/python2.5/site-packages/sqlalchemy/orm/unitofwork.py in execute_save_steps(self, trans, task) 1067 1068 def execute_save_steps(self, trans, task): -> 1069 self.save_objects(trans, task) 1070 self.execute_cyclical_dependencies(trans, task, False) 1071 self.execute_per_element_childtasks(trans, task, False) /usr/lib/python2.5/site-packages/sqlalchemy/orm/unitofwork.py in save_objects(self, trans, task) 1058 1059 def save_objects(self, trans, task): -> 1060 task.mapper.save_obj(task.polymorphic_tosave_objects, trans) 1061 1062 def delete_objects(self, trans, task): /usr/lib/python2.5/site-packages/sqlalchemy/orm/mapper.py in save_obj(self, objects, uowtransaction, postupdate, post_update_cols, single) 988 if has_identity(obj): 989 if obj._instance_key != instance_key: --> 990 raise exceptions.FlushError("Can't change the identity of instance %s in session (existing identity: %s; new identity: %s)" % (mapperutil.instance_str(obj), obj._instance_key, instance_key)) 991 992 inserted_objects = util.Set() FlushError: Can't change the identity of instance PersonEmails@0xa5ba62c in session (existing identity: (, (1128, 'mmcgrath'), None); new identity: (, (1128, 'toshio'), None))