Hi all,
I am trying to catch and handle an exception thrown by the gadfly db. My code is as follows:
<dtml-try> <dtml-call = expr=3D"sql_add_software(p_custName=3DcustName,swName=3DswName)"> <dtml-except> An error occurred. Error type: <dtml-var error_type> Error value: <dtml-var error_value> </dtml-try>
The error is thrown and caught (violation of a unique constraint), but it still inserts the row in the DB.
When I try to delete the identical rows, I get the following error:
Error, exceptions.ValueError: list.remove(x): x not in list
Any ideas?
TIA,
Miche=E1l Healy
Michael, You have stumbled across a little feature in Gadfly. In essence, although an exception is raised the data still gets written to the database. What you need to do is capture the exception gadfly.store.StorageError and when it occurs issue a rollback. e.g. in Python;
db = gadfly.gadfly('myDb', 'myDbDir') cursor = db.cursor() try: ... cursor.execute("INSERT INTO table (col1, col2, col3) values (?, ?, ?)", val1, val2, val3) ... except gadfly.store.StorageError: ... db.rollback()
I'm a bit new to Zope so hopefully some kind soul will help translate this to the appropriate DTML or other appropriate form. This has been logged as a bug with gadfly (see http://sourceforge.net/tracker/?func=detail&atid=100662&aid=632247&group_id=... for details). Regards, Andy -- ---------------------------------------------------------------------- From the desk of Andrew J Todd esq - http://www.halfcooked.com