Mike, Michael Bayer wrote: > On Nov 7, 2007, at 12:32 PM, Werner F. Bruhin wrote: > > >> Can you point out what I did wrong, please. >> >> > > id have to see a larger example, seems like something is marking the > column as modified when it should not be. > I put a little test case together, which does very little but I get the exception.
engine = sa.create_engine(url, encoding='utf8', echo=True) Session = sao.sessionmaker(autoflush=True, transactional=True) Session.configure(bind=engine) session = Session() dbItemConsumption = db.Consumption() dbItemConsumption.fk_cbbottleid = 33 session.save(dbItemConsumption) session.flush session.commit() Here the echo output and the exception is: 2007-11-07 18:52:53,438 INFO sqlalchemy.engine.base.Engine.0x..d0 BEGIN 2007-11-07 18:52:53,460 INFO sqlalchemy.engine.base.Engine.0x..d0 SELECT gen_id(gen_consumption_consumptionid, 1) FROM rdb$database 2007-11-07 18:52:53,460 INFO sqlalchemy.engine.base.Engine.0x..d0 None 2007-11-07 18:52:53,463 INFO sqlalchemy.engine.base.Engine.0x..d0 INSERT INTO consumption (consumptionid, quantity, unitprice, consumedvalue, remarks, consumed, maturityfirst, maturitybest, maturitypast, created, updated, fk_reasonid, fk_cbbottleid, transferid, fk_cellarid, fk_ratingid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 2007-11-07 18:52:53,464 INFO sqlalchemy.engine.base.Engine.0x..d0 [58, None, None, None, None, None, None, None, None, None, None, None, 33, None, None, None] 2007-11-07 18:52:53,466 INFO sqlalchemy.engine.base.Engine.0x..d0 ROLLBACK Traceback (most recent call last): File "saTest.py", line 27, in <module> session.commit() File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\session.py", line 483, in commit self.transaction = self.transaction.commit() File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\session.py", line 210, in commit self.session.flush() File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\session.py", line 681, in flush self.uow.flush(self, objects) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 216, in flush flush_context.execute() File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 432, in execute UOWExecutor().execute(self, head) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1070, in execute_save_steps self.execute_childtasks(trans, task, False) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1088, in execute_childtasks self.execute(trans, child, isdelete) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1051, in execute self.execute_save_steps(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1065, in execute_save_steps self.save_objects(trans, task) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\unitofwork.py", line 1056, in save_objects task.mapper.save_obj(task.polymorphic_tosave_objects, trans) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\orm\mapper.py", line 1134, in save_obj c = connection.execute(statement.values(value_params), params) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\engine\base.py", line 779, in execute return Connection.executors[c](self, object, multiparams, params) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\engine\base.py", line 829, in _execute_clauseelement return self._execute_compiled(elem.compile(dialect=self.dialect, column_keys=keys, inline=len(params) > 1), distilled_params=params) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\engine\base.py", line 841, in _execute_compiled self.__execute_raw(context) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\engine\base.py", line 852, in __execute_raw self._cursor_execute(context.cursor, context.statement, context.parameters[0], context=context) File "c:\python25\lib\site-packages\SQLAlchemy-0.4.0-py2.5.egg\sqlalchemy\engine\base.py", line 869, in _cursor_execute raise exceptions.DBAPIError.instance(statement, parameters, e) sqlalchemy.exceptions.ProgrammingError: (ProgrammingError) (-151, 'isc_dsql_prepare: \n attempted update of read-only column') 'INSERT INTO consumption (consumptionid, quantity, unitprice, consumedvalue, remarks, consumed, maturityfirst, maturitybest, maturitypast, created, updated, fk_reasonid, fk_cbbottleid, transferid, fk_cellarid, fk_ratingid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' [58, None, None, None, None, None, None, None, None, None, None, None, 33, None, None, None] Here the section of model.py. consumption_table = sa.Table(u'consumption', metadata, sa.Column(u'consumptionid', sa.Integer(), sa.Sequence('gen_consumption_consumptionid'), primary_key=True, nullable=False), sa.Column(u'quantity', sa.Integer()), sa.Column(u'unitprice', sa.Numeric(precision=18,length=2,asdecimal=True)), sa.Column(u'consumedvalue', sa.Numeric(precision=18,length=2,asdecimal=True)), sa.Column(u'remarks', sa.String(length=50, convert_unicode=False)), sa.Column(u'consumed', sa.DateTime(timezone=False)), sa.Column(u'maturityfirst', sa.Integer()), sa.Column(u'maturitybest', sa.Integer()), sa.Column(u'maturitypast', sa.Integer()), sa.Column(u'created', sa.Date()), sa.Column(u'updated', sa.Date()), sa.Column(u'fk_reasonid', sa.Integer(), sa.ForeignKey(u'reason_ls.reasonid')), sa.Column(u'fk_cbbottleid', sa.Integer(), sa.ForeignKey(u'cbbottle.cbbottleid'), nullable=False), sa.Column(u'transferid', sa.Integer()), sa.Column(u'fk_cellarid', sa.Integer(), sa.ForeignKey(u'cellar.cellarid')), sa.Column(u'fk_ratingid', sa.Integer(), sa.ForeignKey(u'rating.ratingid')), ) class Consumption(object): def consumedvalue(self): return self._consumedvalue consumedvalue = property(consumedvalue) pass consumption = sao.mapper(Consumption, consumption_table, properties={ 'reason_ls': sao.relation(Reason_Ls, backref='consumption'), 'rating': sao.relation(Rating, backref='consumption'), 'cbbottle': sao.relation(Cbbottle, backref='consumption'), 'cellar': sao.relation(Cellar, backref='consumption'), '_consumedvalue': consumption_table.c.consumedvalue, 'consumedvalue': sao.synonym('_consumedvalue'), }) Let me know if I can provide anything else on this to pin point it. Werner --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---