天天看點

用Python DBUtils安全連接配接mssql

   但連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