lijm1522 发表于 2017-4-21 09:54:13

python dbpool

  Trac back:http://jonpy.sourceforge.net/dbpool.html
dbpool module
Synopsis
  The dbpoolmodule is a wrapper for PythonDB-API 2.0-compliantdatabase modules to (a) keep a pool of physical connections available and (b)upgrade the modules to threadsafetylevel 2, whichmeans that threads can share logical database connections.
Usage
  The module provides only one function not described by theDB-API 2.0spec. The module is initialized by callingset_databasewith a reference to theunderlying database module to be used and the number of physical databaseconnections to keep in the pool. The dbpoolmodule is thenconfigured to act precisely like the underlying database module, except thatphysical database connections are not always closed when you have finished withthem, and if you try to create more than one cursor on a single logicalconnection, a new physical connection is created for the new cursor.
  When a logical database connection is no longer being used (i.e. you callthe closefunction or all references to the connection aredeleted), the physical connection is returned to the pool to be used the nexttime a connection is requested. If the pool is full (i.e. the limit set in thecall to set_databaseis reached) thenthe phsyical database connection is closed.
  Note that your code can either create one logical database connection, andthen create many cursors from that, or create many logical databaseconnections, and create one or more cursors from each of these. Either way thebehaviour of the dbpoolmodule will be the same - it will poolphsyical database connections, and only create one cursor per physicaldatabase 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 haveconfigured dbpoolto 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 afterset_databasehas been called. It willcontain the value from the underlying database module.
Warning
Error
InterfaceError
DatabaseError
DataError
OperationalError
IntegrityError
InternalError
ProgrammingError
NotSupportedError
  These exception classes are only available afterset_databasehas been called. Theyare copied from the underlying database module.
Functions
set_database(dbmod, minconns)
  dbmod: module
minconns: integer
  Configures the dbpoolmodule to act as a wrapper around thespecified DB-API module. dbmodis a reference to the databasemodule to use. minconnsis an integer, which must be 1 or greater,which indicates the number of physical database connections of each 'type' tokeep in the pool. Physical database connections are of the same 'type' if allthe parameters to the DB-API connectfunction are the same (i.e.they are connecting to the same database, on the same host, with the sameusername, with the same options).
  The database module to be used must have a threadsafetylevelof at least 1, i.e. if the database cannot cope at all withmulti-threading then there is nothing dbpoolcan do to make itwork.
  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 afterset_databasehas been called. Theparameters are dependent on the underlying database module being used.A logical database connection from the pool corresponding to databaseconnections with the parameters given is returned. If the pool is empty then anew physical connection is created.
  Example:
dbh = dbpool.connect(user="example", passwd="s3cr3t", db="example")
dbc = dbh.cursor()
页: [1]
查看完整版本: python dbpool