用Python DBUtils安全連線mssql

來源:互聯網
上載者:User
    DBUtils 是一套允許線程化 Python 程式可以安全和有效訪問資料庫的模組。有人在基於Pylons的伺服器上測試了使用DBUtils前後的效能對比,看上去似乎效能不錯。不失為一個管理資料庫串連的辦法。

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.