[Zope-DB] working with zope rdbms transaction mgmt

Maciej Wisniowski maciej.wisniowski at coig.katowice.pl
Mon Oct 9 13:14:43 EDT 2006


>> 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?
>
> Yes.
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()

etc.

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

-- 
Maciej Wisniowski


More information about the Zope-DB mailing list