All pastes #914332 Raw Edit

Miscellany

public text v1 · immutable
·published 2008-02-22 20:21 UTC
rendered paste body
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/<ipython console> in <module>()

/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: (<class 'fas.model.PersonEmails'>, (1128, 'mmcgrath'), None); new identity: (<class 'fas.model.PersonEmails'>, (1128, 'toshio'), None))