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