I have a problem deleting a Consevent instance and get the exception
shown further below.
Relevant part of my model:
class Consevent(Base):
__table__ = sa.Table(u'consevent', metadata,
sa.Column(u'conseventid', sa.Integer(),
sa.Sequence('gen_consevent_conseventid'), primary_key=True, nullable=False),
sa.Column(u'description', sa.String(length=25, convert_unicode=False)),
sa.Column(u'conseventdate', sa.DateTime(timezone=False)),
sa.Column(u'fk_reasonid', sa.Integer(),
sa.ForeignKey(u'reason_ls.reasonid')),
sa.Column(u'created', sa.Date()),
sa.Column(u'updated', sa.Date()),
sa.Column(u'notes', sa.TEXT(length=32000, convert_unicode=True)),
)
reason_ls = sao.relation(Reason_Ls)
conseventgl = sao.relation('Conseventgl', cascade="all, delete,
delete-orphan", backref='conseventgl')
conseventit = sao.relation('Conseventit', cascade="all, delete,
delete-orphan", backref='conseventit')
conseventmu = sao.relation('Conseventmu', cascade="all, delete,
delete-orphan", backref='consevent')
vconseventmu = sao.relation('Vconseventmu', backref='consevent',
passive_deletes=True)
class Vconseventmu(Base):
# note that this is a view in the Firebird SQL db
__table__ = sa.Table(u'vconseventmu', metadata,
sa.Column(u'conseventmuid', sa.Integer(),
sa.ForeignKey(u'conseventmu.conseventmuid'), primary_key=True),
sa.Column(u'name', sa.String(length=50, convert_unicode=False)),
sa.Column(u'itemtype', sa.String(length=1, convert_unicode=False)),
sa.Column(u'description', sa.String(length=50, convert_unicode=False)),
sa.Column(u'created', sa.Date()),
sa.Column(u'updated', sa.Date()),
sa.Column(u'fk_conseventid', sa.Integer(),
sa.ForeignKey(u'consevent.conseventid')),
sa.Column(u'fk_ingrid', sa.Integer(), sa.ForeignKey(u'ingr_ls.ingrid')),
sa.Column(u'fk_recipeid', sa.Integer(),
sa.ForeignKey(u'recipe.recipeid')),
sa.Column(u'fk_courseid', sa.Integer(),
sa.ForeignKey(u'course_ls.courseid')),
sa.Column(u'fk_cbbottleid', sa.Integer(),
sa.ForeignKey(u'cbbottle.cbbottleid')),
)
ingr_ls = sao.relation(Ingr_Ls)
recipe = sao.relation(Recipe)
course_ls = sao.relation(Course_Ls)
cbbottle = sao.relation(Cbbottle)
To delete a consevent I do:
for dbitem in self.dbItem.conseventit:
# clear bottag table foreign key for consumption
utils.BottleTagsClearConsumption(self.Getds(),
dbitem.consumption)
self.Getds().flush()
self.Getds().delete(self.dbItem)
self.dbItem is an instance of Consevent.
Can anyone see what I am doing wrong.
Werner
**** Mon Sep 01 16:36:24 2008 **** Version: 3.0.416.1 **** wxV: 2.8.8.1
(msw-unicode) *****
Traceback (most recent call last):
File "C:\Dev\twcb\Program\dialogconsevent.py", line 752, in OnDeleteButton
if self.DeleteConsEvent():
File "C:\Dev\twcb\Program\dialogconsevent.py", line 797, in
DeleteConsEvent
self.Getds().commit()
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.0beta3-py2.5.egg\sqlalchemy\orm\session.py",
line 663, in commit
self.transaction.commit()
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.0beta3-py2.5.egg\sqlalchemy\orm\session.py",
line 376, in commit
self._prepare_impl()
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.0beta3-py2.5.egg\sqlalchemy\orm\session.py",
line 360, in _prepare_impl
self.session.flush()
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.0beta3-py2.5.egg\sqlalchemy\orm\session.py",
line 1409, in flush
flush_context.execute()
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.0beta3-py2.5.egg\sqlalchemy\orm\unitofwork.py",
line 265, in execute
UOWExecutor().execute(self, tasks)
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.0beta3-py2.5.egg\sqlalchemy\orm\unitofwork.py",
line 753, in execute
self.execute_save_steps(trans, task)
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.0beta3-py2.5.egg\sqlalchemy\orm\unitofwork.py",
line 768, in execute_save_steps
self.save_objects(trans, task)
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.0beta3-py2.5.egg\sqlalchemy\orm\unitofwork.py",
line 759, in save_objects
task.mapper._save_obj(task.polymorphic_tosave_objects, trans)
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.0beta3-py2.5.egg\sqlalchemy\orm\mapper.py",
line 1182, in _save_obj
c = connection.execute(statement.values(value_params), params)
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.0beta3-py2.5.egg\sqlalchemy\engine\base.py",
line 848, in execute
return Connection.executors[c](self, object, multiparams, params)
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.0beta3-py2.5.egg\sqlalchemy\engine\base.py",
line 899, 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.5.0beta3-py2.5.egg\sqlalchemy\engine\base.py",
line 911, in _execute_compiled
self.__execute_raw(context)
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.0beta3-py2.5.egg\sqlalchemy\engine\base.py",
line 920, in __execute_raw
self._cursor_execute(context.cursor, context.statement,
context.parameters[0], context=context)
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.0beta3-py2.5.egg\sqlalchemy\engine\base.py",
line 964, in _cursor_execute
self._handle_dbapi_exception(e, statement, parameters, cursor)
File
"c:\python25\lib\site-packages\sqlalchemy-0.5.0beta3-py2.5.egg\sqlalchemy\engine\base.py",
line 946, in _handle_dbapi_exception
raise exc.DBAPIError.instance(statement, parameters, e,
connection_invalidated=is_disconnect)
ProgrammingError: (ProgrammingError) (-150, 'isc_dsql_prepare: \n
cannot update read-only view VCONSEVENTMU') 'UPDATE vconseventmu SET
fk_conseventid=? WHERE vconseventmu.conseventmuid = ?' [None, 3]
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---