[Zope-DB] dco2 and bind variables
Matthew T. Kromer
matt at zope.com
Wed Oct 8 14:41:05 EDT 2003
Jim Abramson wrote:
>Rather than rolling my own subclass of DCO2 (sounds like fun but...), I'm inclined to start using external methods instead of sql methods, which import DCO2 and now I have direct access to the execute() method.
>Ideally, I'd like to pass the zope database connection object to the external method, let the method call execute/fetchall, and return the results, because sometimes the same sql is run against different connections. A few quick tests of this worked just fine, hooray. But does it introduce any risk, as far as the pooling of connections or handling of transactions that may be going on elsewhere in zope? Is there some pitfall I'm not aware of here? It almost seems, well, too easy...
>Thanks for advice.
If you grab the connection object from Zope and call it, you get an
object back that has a query() method on it. You can look under the
covers and see that it has a "cursor" attribute, which is a DCOracle2
cursor. If you grab a cursor in this way, the cursor will be registered
with the transaction environment in Zope, and you don't need to worry
about explicitly committing or rolling back your SQL.
Note that in my opinion, it would be advantageous to expand Zope's
notion of what methods a database adapter provides to include providing
a DBAPI wrapper object. Right now the DA connection object's callable
result only provides "query()" and a few other methods like __str__.
Zope Corporation http://www.zope.com/
More information about the Zope-DB