日期:2014-05-16  浏览次数:20692 次

使用MySQL-Python1.2.3链接MySQL5.5

mysql-python1.2.3可以连接MySQL5.5

环境:Windowsxp python2.6 mysql5.1(之前安装的,没有删除) mingw32

安装mysql5.5:

这个没什么好说的,记得安装的时候把开发人员所需的内容选上(或者完全安装)。

我的mysql5.1还跑在3306端口,所以5.5就设在3307端口。

服务的名字也不能用“mysql”,因为5.1占了,所以我设成mysql5.5

?

安装mysql-python1.2.3:

安装1.2.2的时候使用的是Windows exe格式的安装包,没有费什么劲,没有想到这个1.2.3的源码包装起来这么费劲。

问题主要出在setup_windows.py这个安装脚本里。

首先,里面通过注册表获取mysql_root的语句会报错。我对python的_winreg包也不太了解,所以没有改,注释掉后,直接从注册表里将mysql的location值赋值给了mysql_root:

?

# serverKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, options['registry_key'])

# mysql_root, dummy = _winreg.QueryValueEx(serverKey,'Location')

mysql_root = 'D:\Program Files\MySQL\MySQL Server 5.5'

然后,安装选项也有问题,这一句:

?libraries = [ 'kernel32', 'advapi32', 'wsock32', client ]

会导致非常壮观非常长的错误日志。问题主要出在最后的client上,把client改为'libmysql'就可以了:

?

# libraries = [ 'kernel32', 'advapi32', 'wsock32', client ]

libraries = [ 'kernel32', 'advapi32', 'wsock32', 'libmysql']

?


中间还可能会出现缺少某某.h文件的错误,主要的是在mysql的安装过程中没有安装developer comments(貌似是这)的缘故。

?

?

可以参考这个博客:

http://daniel-zhy.livejournal.com/31420.html

需要注意的是,正如我在博客下面留言的:不应该是'mysql',而是'libmysql'。

?

?

链接测试:

In [34]: cur1.execute('show tables;')
Out[34]: 2L

In [35]: cur1.fetchall()
Out[35]: (('dict',), ('test5.5',))

In [36]: cur1.execute('desc dict;')
Out[36]: 2L

In [37]: cur1.fetchall()
Out[37]:
(('key', 'tinyint(4)', 'NO', 'PRI', '0', ''),
 ('value', 'varchar(20)', 'YES', '', None, ''))

?

?

?

1 楼 MyEyeOfJava 2011-02-25  
thanks
2 楼 MyEyeOfJava 2011-02-25  
thanks