但連mysql沒問題,代碼很簡單,
from dbutils.pooleddb import pooleddb
import mysqldb
pool = pooleddb(mysqldb, 5,host = "ipip", user = "root", passwd = "....", db = "dbtest")
"""
pooleddb的第一個參數是creator: either an arbitrary function returning new db-api 2
connection objects or a db-api 2 compliant database module
也就是說,我們傳入一個資料庫實作類的module名字即可,它自己會去判斷如何建立資料庫連接配接。
db_conn = pool.connection() # 這就是從連接配接池中擷取一個連接配接的語句
但是針對sqlserver,似乎網際網路上沒有人提及如何連,而且上面mysql的這種簡潔寫法也不再适用。一個原因在于python中的_mssql庫并不是db-sig compliant module,隻有與之一同打包的pymssql庫(其實pymssql就是在_mssql的基礎上按照規範封裝了一層罷了)才是。折騰了許久,在google code裡也搜尋了不少dbutil python代碼,終于摸索出這麼一條路子:
import _mssql # 連接配接ms sql server 2000的庫
import pymssql # db-sig compliant module for communicating with ms sql servers
from dbutils.pooleddb import pooleddb
args = (0,0,0,config.pool_max_connections,0,0,none )
conn_kwargs = {'host':databasehost+','+databaseport, 'user':databaseusername,'password':databaseuserpwd, 'database': databasename}
config.databaseconnpool = pooleddb(pymssql, *args, **conn_kwargs)
# 傳入參數時,位置參數要在最前面,關鍵字參數其次,變長參數再次,關鍵字變長參數最後
# args 是 關鍵字參數
# conn_kwargs 變長參數
鄭昀 20071227