python对数据库的操作大多是基于
MySQLdb 模块
[url]http://mysql-python.sourceforge.net/[/url]
但是,一般情况下大家都很少直接去调用 MySQLdb 去操作数据库
大多会借助
adodb
[url]http://phplens.com/lens/adodb/adodb-py-docs.htm[/url]
小用了一下 adodb发现,还是比较强大的,(简单,直观)
这样用了一段时间,突然,DBA那边说,数据库需要复用下,又安装了一个mysql,即是两个mysql在一台机器上并存,占用不同的端口
标准端口(3306)
另外一个端口(3307)
再修改程序的时候发现,adodb根本就没有修改port的选项,
为了,不改动太多的已有代码,
于是乎,see了see ,adodb的源码,
(既然 MySQLdb 支持非标准port, 而 adodb是封装了MySQLdb,那就有办法搞搞)
1. 第一步
adodb-220/adodb/adodb.py
2. 第二步, 因为我是使用mysql,所以,只是去改动了adodb_mysql.py
如果你是使用其他数据库,类同,修改之
经过以上2步修改即可,(比较山寨哈)
使用例子
MySQLdb 模块
[url]http://mysql-python.sourceforge.net/[/url]
但是,一般情况下大家都很少直接去调用 MySQLdb 去操作数据库
大多会借助
adodb
[url]http://phplens.com/lens/adodb/adodb-py-docs.htm[/url]
小用了一下 adodb发现,还是比较强大的,(简单,直观)
import adodb;
conn = adodb.NewADOConnection('mysql')
conn.Connect('server','user','pwd','db')
cursor = conn.Execute('select * from table')
while not cursor.EOF:
print cursor.fields
cursor.MoveNext()
cursor.Close()
conn.Close()
这样用了一段时间,突然,DBA那边说,数据库需要复用下,又安装了一个mysql,即是两个mysql在一台机器上并存,占用不同的端口
标准端口(3306)
另外一个端口(3307)
再修改程序的时候发现,adodb根本就没有修改port的选项,
为了,不改动太多的已有代码,
于是乎,see了see ,adodb的源码,
(既然 MySQLdb 支持非标准port, 而 adodb是封装了MySQLdb,那就有办法搞搞)
1. 第一步
adodb-220/adodb/adodb.py
194 def Connect(self,host=None,user=None,password=None,database=None):
195 self.database = database
196 self.host = host
197 self.user = user
198 self.password = password
199 self._connect(host,user,password,database)
200 return bool(self._conn)
增加对 port的支持(其实就是增加从 adodb这边把port参数传入到 MySQLdb 那边就可以了)
修改如下
194 def Connect(self,host=None,user=None,password=None,port=None,database=None):
195 self.database = database
196 self.host = host
197 self.user = user
198 self.password = password
199 self.port = port
200 if self.port is None:
201 self._connect(self.host,self.user,self.password,self.database)
202 else:
203 self._connect(self.host,self.user,self.password,self.database,self.port)
200 return bool(self._conn)
2. 第二步, 因为我是使用mysql,所以,只是去改动了adodb_mysql.py
如果你是使用其他数据库,类同,修改之
34 def _connect(self,host=None,user=None,password=None,database=None):
35 self._conn = MySQLdb.connect(host, user, password, database)
修改如下
34 def _connect(self,host=None,user=None,password=None,database=None, port=None):
35 self._conn = MySQLdb.connect(host, user, password, database, port)
经过以上2步修改即可,(比较山寨哈)
使用例子
import adodb
conn = adodb.NewADOConnection('mysql')
conn.Connect('10.10.10.1', 'user', 'password', 'mydb',3307)