Sun 7 Oct 2007
在python中操作Mysql数据库一般是使用MySQLdb或adodb,但是MySQLdb使用起来有点麻烦,所以平时我都是用adodb来操作mysql数据库。
adodb 有个非常不爽的地方就是无法连接非标准端口(3306)的mysql数据库,这种情况下只能使用MySQLdb了。某台服务器上因为软件兼容问题,同时使用着mysql4.1 和 mysql 5.0 两个数据库软件,mysql 4.1端口是3336。 今天写个程序需要连接这个3336的mysql数据库,本来想凑合着用MySQLdb的,只是觉得非常不爽。adodb也是调用MySQLdb的,为什么不支持非标准端口呢?于是,俺花时间hack一把adodb。
adodb是 Debian Etch 自带的,我想其他版本也是差不多,有同样需求的同学可以看看。
第一个修改的文件: /var/lib/python-support/python2.4/adodb/adodb.py
修改的是 class ADOConnection 中的 Connect函数:
下载: dbport.py
- def Connect(self,host=None,user=None,password=None,database=None,port=None):
- self.database = database
- self.host = host
- self.user = user
- self.password = password
- if port == None :
- self._connect(host,user,password,database)
- else :
- self.port = port
- self._connect(host,user,password,database,port)
- return bool(self._conn)
在函数的参数增加了port=None,连接加入port参数的时候,传过去的_connect也加上port。
第二个修改的是 /var/lib/python-support/python2.4/adodb/adodb_mysql.py
修改 class adodb_mysql(adodb.ADOConnection) 的_connect函数如下:
- def _connect(self,host=None,user=None,password=None,database=None,port=3306):
- self._conn = MySQLdb.connect(host, user, password, database,port)
现在,可以使用非标准端口的mysql了
- import adodb
- conn = adodb.NewADOConnection('mysql')
- conn.Connect('127.0.0.1', 'user', 'password', 'mydb',3336)
飞天的梦想 is proudly powered by