python dbpool

Trac back:http://jonpy.sourceforge.net/dbpool.html

dbpool module

Synopsis

The dbpool module is a wrapper for Python DB-API 2.0-compliant database modules to (a) keep a pool of physical connections available and (b) upgrade the modules to threadsafety level 2, which means that threads can share logical database connections.

Usage

The module provides only one function not described by the DB-API 2.0 spec. The module is initialized by calling set_database with a reference to the underlying database module to be used and the number of physical database connections to keep in the pool. The dbpool module is then configured to act precisely like the underlying database module, except that physical database connections are not always closed when you have finished with them, and if you try to create more than one cursor on a single logical connection, a new physical connection is created for the new cursor.

When a logical database connection is no longer being used (i.e. you call the close function or all references to the connection are deleted), the physical connection is returned to the pool to be used the next time a connection is requested. If the pool is full (i.e. the limit set in the call to set_database is reached) then the phsyical database connection is closed.

Note that your code can either create one logical database connection, and then create many cursors from that, or create many logical database connections, and create one or more cursors from each of these. Either way the behaviour of the dbpool module will be the same - it will pool phsyical database connections, and only create one cursor per physical database connection.

Example:

import jon.dbpool as dbpool
import MySQLdb, MySQLdb.cursors
dbpool.set_database(MySQLdb, 5)
dbh = dbpool.connect(user="example", passwd="s3cr3t", db="example",
  cursorclass=MySQLdb.cursors.DictCursor)
dbc1 = dbh.cursor()
dbc2 = dbh.cursor()

Note that unfortunately, due to the way the DB-API works, once you have configured dbpool to act as a wrapper for a database module, you cannot re-configure with a different module.

Globals

Variables

apilevel

The string 2.0, indicating the DB-API level.

threadsafety

The integer 2, meaning that threads may shared the module, and database connections.

paramstyle

This variable is only available after set_database has been called. It will contain the value from the underlying database module.

Warning
Error
InterfaceError
DatabaseError
DataError
OperationalError
IntegrityError
InternalError
ProgrammingError
NotSupportedError

These exception classes are only available after set_database has been called. They are copied from the underlying database module.

Functions

set_database(dbmod, minconns)

dbmod: module
minconns: integer

Configures the dbpool module to act as a wrapper around the specified DB-API module. dbmod is a reference to the database module to use. minconns is an integer, which must be 1 or greater, which indicates the number of physical database connections of each 'type' to keep in the pool. Physical database connections are of the same 'type' if all the parameters to the DB-API connect function are the same (i.e. they are connecting to the same database, on the same host, with the same username, with the same options).

The database module to be used must have a threadsafety level of at least 1, i.e. if the database cannot cope at all with multi-threading then there is nothing dbpool can do to make it work.

Note that you can only call this function once.

Example:

set_database(MySQLdb, 5)

connect(...)

Returns: database connection instance

This function may only be used after set_database has been called. The parameters are dependent on the underlying database module being used. A logical database connection from the pool corresponding to database connections with the parameters given is returned. If the pool is empty then a new physical connection is created.

Example:

dbh = dbpool.connect(user="example", passwd="s3cr3t", db="example")
dbc = dbh.cursor()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值