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

Python 连接MySQL(Windows版本)

????先来一段MySQLdb(类似于mysql用于Java的连接Jar包)的幽默介绍:

??

Windows
.......

I don't do Windows. However if someone provides me with a package for
Windows, I'll make it available. Don't ask me for help with Windows
because I can't help you.

?

?

? 哈哈,就连设计MySQLdb的大师级人物都对Windows颇有微词,言外之意就是我不提供Windows下的连接文件,哈哈~~

??不过迫于Windows广大客户的压力,MySQL官方还是发布了针对windows的Python连接文件,见附件:

? 下面介绍下在windows下如何利用Python连接MySQL

?? 1:安装windows下的连接文件(.exe格式)

?? 2:很重要的,从MySQL的安装目录下拷贝一个libmySQL.dll文件到Python目录的Lib\site-packages目录下.

????? 例如:我的机子上,就需要执行:

??????cp C:\Program Files\MySQL\MySQL Server 5.0\bin\libmySQL.dll?C:\Python25\Lib\site-packages\libmySQL.dll

??? 3:修改下MySQLdb目录(默认情况下,MySQLdb链接库会安装在Python的Lib\site-packages\目录下)的几个文件

?????? 第一个地方:

?????? 找到python2.6安装目录\Lib\site-packages\MySQLdb
?????? 把__init__.py
?????? from sets import ImmutableSet?
?????? class DBAPISet(ImmutableSet):

?????? 修改成:

?????? class DBAPISet(frozenset):

?????

????? 第二个地方:

?????? 找到python2.6安装目录\Lib\site-packages\MySQLdb
????? 把converters.py
????? from sets import BaseSet, Set
????? 这行删除

???

???? 第三个地方:

???? 依然这个converters.py文件
???? 把48行和128行的 Set 修改成小写的 set
???? 修改后如下:
???? line 48: return set([ i for i in s.split(',') if i ])
????? line 128: set: Set2Str,

?

?? 好了,经过以上步骤。你可以在命令行里连接MySQL了

??? 试着进入命令行,敲入命令import MySQLdb,没出错吗?恭喜你,你可以在命令行里输入命令连接MySQL了。

??

??? 但是如果想要在Eclipse的pydev插件里,连接MySQL的话,需要做额外两件事:

??? 1:进入windows\preference\Pydev\Interpreter-Python下,把MySQLdb的连接目录加入

???

?

?


?? 2:点开上图的Forced Builtins,强行将MySQLdb加入编译队列中

??

?

???

???? 3:好了大功告成了,你可以在Eclipse下做MySQL数据库方面的开发了。

???? 来一段程序示意下吧:

????

import MySQLdb
conn=MySQLdb.connect(user='root',passwd='123456',db='test');
cur=conn.cursor();
cur.execute("select username,password,
date_format(reg_date,'%Y-%m-%d %H-%i-%s') as date from reg_user");
for data in cur.fetchall():
    print data;
cur.close();
conn.commit();
conn.close();

?

?? 输出:

??

('chenwu', '1', '2011-04-22 21-12-44')
('yangliu', '2', '2011-04-22 21-12-50')
('test', 'love', '2011-04-22 21-52-29')
('test', 'joking', '2011-05-01 09-21-47')
('lloss', 'dsdfdd', '2011-05-01 09-38-14')
('test', '4563', '2011-05-01 17-00-22')
('dsss', 'ssss', '2011-05-01 17-02-05')
('dsss', 'ssss', '2011-05-01 17-02-20')
('fffss', 'ssss', '2011-05-01 17-08-03')

?

???