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
-~----------~----~----~----~------~----~------~--~---

Reply via email to