My question is, if i grab a reference to the cursor from some db connection inside a python script, and do a bunch of statements directly on this cursor, and something goes wrong on the nth statement (i.e. uncaught Exception), should I expect all of the statements performed using that
cursor up to that point will be automatically rolled back?

I would say you may expect automation but ONLY if you have
used Zope machinery to get connection object and if
you've registered ResourceManager in transaction machinery.

It is something like that:
when you call Zope connection object (one visible in ZMI)
it returns instance of ResourceManager (zope.Shared.DC.ZRDB.TM)
that has real connection object as it's attribute (usually 'db').

So you may do something like:

resource_manager = context.OracleDatabaseConnection()
db  = resource_manager.db
cur = db.cursor()


But to commit or rollback automatically you need to call
_register() function of resource_manager.

Maciej Wisniowski
Zope-DB mailing list

Reply via email to