[triangle-zpug] Zope database info
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
"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
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:
More information about the triangle-zpug