windows下python之mysqldb模块安装方法


Posted in Python onSeptember 07, 2017

之所以会写下这篇日志,是因为安装的过程有点虐心。目前这篇文章是针对windows操作系统上的mysqldb的安装。安装python的mysqldb模块,首先当然是找一些官方的网站去下载:https://pypi.python.org/pypi/MySQL-python。下载后,cmd进入MySQL-python-1.2.3文件夹,按常规的执行python setup.py install 命令安装此模块,然后就报错了:

windows下python之mysqldb模块安装方法

   这个报错很明显,print

  进行python前,应该先确定当前mysqldb的各个版本都支持python的哪些版本。部分截图如下:

windows下python之mysqldb模块安装方法

mysql-python1.2.5是当前最新的一个版本,这个版本支持mysql3.23-5.5,python2.4-2.7的,不支持python3系列。介于安装时当前系统的python是3.7.11的,在卸载的时候,报错了:

there is a problem with this windows installer package.A programe run as part of the setupdid not finish as expected.Contact your support personnel or package vendor.

估计这个问题可能是文件缺损导致的,于是尝试了网上说的一些解决方法:

方法一:重新运行安装程序,选择repair,修复完再卸载。(结果:无用,repair的时候报另外一个网络异常错误)
方法二:安装一个其他版本的python,再卸载python3.7.11.(结果:无用,安装新的版本产生的文件不会修复老版本文件的缺失)
方法三:删除注册表的信息,或者使用Your Unin-staller!强制删除python3.7.11.(结果:终于给删除成功了,

ps:http://wenku.baidu.com/link?url=dujEO65nXySNvwUyDJVR5kmbrlcqp7WsvhLFGN_7L5q-58EoVjyw4DjiTS_J5PomPzgvdG69uulXDI8TbMgJlXk9Y-ayHs8qOD3Z3AomBU7,链接里有产品注册)

或者这篇文章:https://3water.com/softjc/500307.html

以上3个解决方法只有第三个最暴力的方法解决我的问题,前面2种有些网友都能使用,操作后也能解决问题。卸载高版本的python后,终于装上了低版本的python。

接着安装mysqldb,然后又报了一个错:缺少c语言的编译环境,需要去下载一个VC环境。这个其实挺好办,错误提示里本来就有下载链接(忘记截图了,抱歉)https://www.microsoft.com/en-us/download/confirmation.aspx?id=44266,下载好VCForPython27.msi安装就不报这错了。但是报另一个错。(又忘了截图),然后觉得很有必要在MySQL-python-1.2.3文件夹下查看下readme了,里面一般都会记载着怎么安装和怎么使用。部分关于windows系统安装的重要信息翻译后截图如下:

Windows.......
我不做Windows。 但是如果有人给我提供了一个包Windows,我会使它可用。 不要问我有关Windows的帮助因为我不能帮助你。
一般来说,运行setup.py与上面类似::
 C:\ ...> python setup.py install C:\ ...> python setup.py bdist_wininst
后面的示例应该构建一个Windows安装程序包,如果你有正确的工具。 无论如何,你必须有一个C编译器。另外,你必须设置一个环境变量(mysqlroot)这是MySQL安装的路径。 在理论上,它会的可能从注册表中获取这些信息,但是像我说的,
我不做Windows,但我会接受这样做的补丁。
在Windows上,您肯定必须编辑site.cfg,因为有在MySQL包中没有mysql_config。

然后开始默默的安装mysql,去官网下了个5.5.7版本的,安装验证连接DB时一直报错:ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: NO)

这个百度下,在安装文件夹的my.ini里增加skip-grant-tables就可以了

[mysqld]
skip-grant-tables
# The TCP/IP Port the MySQL Server will listen on
port=3306

然后就能正常连接DB并访问DB了,这下我觉得应该没问题,然而安装时,又报了一个错:

E:\Code\Python\mysql>setup.py install 
Traceback (most recent call last): 
 File "E:\Code\Python\mysql\setup.py", line 15, in <module> 
 metadata, options = get_config() 
 File "E:\Code\Python\mysql\setup_windows.py", line 7, in get_config 
 serverKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, options['registry_key']) 
WindowsError: [Error 2]

可行的解决方法:打开setup_windows.py,然后将注册表操作的两行代码注释掉,并添加一行代码:

#serverKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, options['registry_key']) 
 #mysql_root, dummy = _winreg.QueryValueEx(serverKey,'Location') 
 mysql_root = "C:\Program Files\MySQL\MySQL Server 5.5" #MySQL目录

然后接着安装,又报了一个错:

windows下python之mysqldb模块安装方法

可行的解决方法:下载MySQL Connector(地址:http://dev.mysql.com/get/Downloads/Connector-C/mysql-connector-c-6.0.2-win32.msi/from/http://ftp.jaist.ac.jp/pub/mysql/ ),然后修改setup_windows.py的代码:

#serverKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, options['registry_key']) 
 #mysql_root, dummy = _winreg.QueryValueEx(serverKey,'Location') 
 mysql_root = "C:\Program Files\MySQL\MySQL Connector C 6.0.2" #MySQL Connector C 6.0.2目录

接着执行安装,天啊,终于成功了。

import MySQLdb

if __name__ == "__main__":
 test= MySQLdb.connect("localhost","root","root1234","mysql" )
 cur = test.cursor()
 cur.execute('show databases;')
 for data in cur.fetchall():
  print data

打印结果如下:

D:\Python27\python.exe D:/untitled/mysql_test.py
('information_schema',)
('mysql',)
('performance_schema',)
('test',)

Process finished with exit code 0

之前学习RF的时候安装过第三方库却从未如此虐心过,也有可能当时使用的本来就是低版本的python,而且当时机器上有各种程序的编译环境,但是暴露出一个问题,就是安装三方库时候没有一套通用的方法帮助快速安装,基于狗血的经历,特做以下小结:
1、安装前看下安装文件里的read me和下载页面的一些使用说明(一般作者都是会编写安装手册和test文档的,无论是哪类操作系统多多少少都是会介绍的)。

2、确定python三方库支持python的哪个版本,目前看python2.7.11还是挺好的。

3、确定三方库安装时需要哪些其他的环境和依赖的软件。

Python 相关文章推荐
Python中random模块用法实例分析
May 19 Python
Django的数据模型访问多对多键值的方法
Jul 21 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
Jan 20 Python
Python字符编码判断方法分析
Jul 01 Python
利用Python实现命令行版的火车票查看器
Aug 05 Python
Python学习pygal绘制线图代码分享
Dec 09 Python
python实现Floyd算法
Jan 03 Python
python保存数据到本地文件的方法
Jun 23 Python
python在html中插入简单的代码并加上时间戳的方法
Oct 16 Python
Django框架实现的普通登录案例【使用POST方法】
May 15 Python
python全栈要学什么 python全栈学习路线
Jun 28 Python
python GUI模拟实现计算器
Jun 22 Python
python 全局变量的import机制介绍
Sep 07 #Python
Python 多线程的实例详解
Sep 07 #Python
Python 闭包的使用方法
Sep 07 #Python
Python基于回溯法子集树模板解决选排问题示例
Sep 07 #Python
Python基于回溯法子集树模板解决全排列问题示例
Sep 07 #Python
python中利用await关键字如何等待Future对象完成详解
Sep 07 #Python
Python基于回溯法子集树模板解决m着色问题示例
Sep 07 #Python
You might like
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
fleaphp rolesNameField bug解决方法
2011/04/23 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
PHP时间类完整代码实例
2021/02/26 PHP
写的htc的数据表格
2007/01/20 Javascript
用javascript获取textarea中的光标位置
2008/05/06 Javascript
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
2013/09/06 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
angularJS 如何读写缓冲的方法(推荐)
2016/08/06 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
简易的JS计算器实现代码
2016/10/18 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
vue、react等单页面项目应该这样子部署到服务器
2018/01/03 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
2020/01/07 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
2020/07/19 Javascript
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
浅谈Python 对象内存占用
2016/07/15 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
2017/09/24 Python
Django admin美化插件suit使用示例
2017/12/12 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
一看就懂得Python的math模块
2018/10/21 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
eBay比利时购物网站:eBay.be
2019/08/09 全球购物
灵泰克Java笔试题
2016/01/09 面试题
通信工程毕业生自荐信
2013/11/01 职场文书
在职人员函授期间自我评价分享
2013/11/08 职场文书
无犯罪记录证明
2014/09/19 职场文书
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python