python mysql指定端口_python adodb 支持mysql非标准端口

原文链接:h ttp://www.iteye.com/topic/408249

python对数据库的操作大多是基于

MySQLdb 模块

http://mysql-python.sourceforge.net/

但是,一般情况下大家都很少直接去调用 MySQLdb 去操作数据库

大多会借助

adodb

http://phplens.com/lens/adodb/adodb-py-docs.htm

小用了一下 adodb发现,还是比较强大的,(简单,直观)

Python代码

0818b9ca8b590ca3270a3433284dd417.png

importadodb;

conn = adodb.NewADOConnection('mysql')

conn.Connect('server','user','pwd','db')

cursor = conn.Execute('select * from table')

whilenotcursor.EOF:

printcursor.fields

cursor.MoveNext()

cursor.Close()

conn.Close()

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

Python代码

0818b9ca8b590ca3270a3433284dd417.png

194defConnect(self,host=None,user=None,password=None,database=None):

195self.database = database

196self.host = host

197self.user = user

198self.password = password

199self._connect(host,user,password,database)

200returnbool(self._conn)

增加对 port的支持(其实就是增加从 adodb这边把port参数传入到 MySQLdb 那边就可以了)

修改如下

194defConnect(self,host=None,user=None,password=None,port=None,database=None):

195self.database = database

196self.host = host

197self.user = user

198self.password = password

199self.port = port

200ifself.portisNone:

201self._connect(host,user,password,database)

202else:

203self._connect(host,user,password,database,self.port)

200returnbool(self._conn)

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(host,user,password,database)

202 else:

203 self._connect(host,user,password,database,self.port)

200 return bool(self._conn)

2. 第二步, 因为我是使用mysql,所以,只是去改动了adodb_mysql.py

如果你是使用其他数据库,类同,修改之

Python代码

0818b9ca8b590ca3270a3433284dd417.png

34def_connect(self,host=None,user=None,password=None,database=None):

35self._conn = MySQLdb.connect(host, user, password, database)

修改如下

34def_connect(self,host=None,user=None,password=None,database=None, port=None):

35self._conn = MySQLdb.connect(host, user, password, database, port)

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步修改即可,(比较山寨哈)

使用例子

Python代码

0818b9ca8b590ca3270a3433284dd417.png

importadodb

conn = adodb.NewADOConnection('mysql')

conn.Connect('10.10.10.1','user','password','mydb',3307)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值