用Python DBUtils安全连接mssql-阿里云开发者社区

开发者社区> 数据库> 正文

用Python DBUtils安全连接mssql

简介:
 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 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章