durusmail: quixote-users: Sharing a database connection
Sharing a database connection
2003-08-07
2003-08-07
2003-08-07
Sharing a database connection
Daniel Chudnov
2003-08-07
On Thu, 2003-08-07 at 10:42, VanL wrote:

> I am using quixote+mod_python as a front-end for a database app.  I
> would like the database connections to persist somewhere -- probably in
> the interpreter attached to the apache process -- so that I do not have
> to reconnect with each request.
>
> However, I am unsure how to do this, and how to then access that db
> connection from quixote.  Does anyone know how this is a accomplished?

I'm using scgi, not mod_python, but have had success so far using
Webware's DBPool.py (from the MiscUtils module):

http://webware.sourceforge.net/Webware-0.8.1/MiscUtils/Docs/UsersGuide.html

Someone suggested this on the list not long ago, and it indeed works
quite simply.  It's initialized in MySessionPublisher.__init__():

    # ...please adjust for any odd indenting...

    self._dbpool = DBPool(MySQLdb,
        config.db_pool_size,
        config.db_host,
        config.db_user,
        config.db_passwd,
        config.db_name)

...which then also provides:

  def get_cursor (self):
        return self._dbpool.getConnection().cursor()

...so then, in .py or .ptl files:

  from quixote import get_publisher
  cursor = get_publisher().get_cursor()
  [cursor.whatever()]
  cursor.close()

This setup appears to perform adequately under (simple!) load testing.

I'm sorry I don't know whether this translates simply into mod_python;
perhaps the initialization and get_cursor() could be fit into
a subclassed ModPythonPublisher?

Hope this helps, -Dan


reply