[triangle-zpug] Zope database info

Geoff Davis geoff at geoffdavis.net
Thu Dec 9 20:36:44 CET 2004


Thanks for the talk, Ben!  Nice work!

Here is some more info on the psycopg database connector that Ben was
talking about:  http://initd.org/software/initd/psycopg

Regarding the questions about connection pooling, the following might be of
interest:

"psycopg is a PostgreSQL database adapter for the Python programming
language. It was written from scratch with the aim of being very small and
fast, and stable as a rock. The main advantages of psycopg are that it
supports the full Python DBAPI-2.0, being thread safe at level 2 and
providing some very usefull extensions like the user-defined type casters.

psycopg is different from the other database adapter because it was designed
for heavily multi-threaded applications that create and destroy lots of
cursors and make a conspicuous number of concurrent INSERTs or UPDATEs.
Every open Python connection keeps a pool of real (UNIX or TCP/IP)
connections to the database. Every time a new cursor is created, a new
connection does not need to be opened; instead one of the unused connections
from the pool is used. That makes psycopg very fast in typical client-server
applications that create a servicing thread every time a client request
arrives."

As best I can tell from poking around on the web, ZPsycoPGDA (the Zope
wrapper for psycopg) couples Postgres transactions to Zope transactions,
i.e. when an exception is raised and Zope rolls back a transaction, your
database transaction is also rolled back.

It sounded from the discussion last night like there is some interest in the
finer points of Zope/database interactions.  Here is a good mailing list if
you have detailed technical questions:

http://mail.zope.org/mailman/listinfo/zope-db

Geoff




More information about the triangle-zpug mailing list