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爬虫之urllib2使用指南
Nov 05 Python
Python获取Windows或Linux主机名称通用函数分享
Nov 22 Python
python fabric使用笔记
May 09 Python
Python3.6正式版新特性预览
Dec 15 Python
使用Python处理BAM的方法
Sep 28 Python
Python 中导入csv数据的三种方法
Nov 01 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
Jun 05 Python
Python实现网页截图(PyQT5)过程解析
Aug 12 Python
python中threading开启关闭线程操作
May 02 Python
Python 如何定义匿名或内联函数
Aug 01 Python
Python 中的函数装饰器和闭包详解
Feb 06 Python
Python-typing: 类型标注与支持 Any类型详解
May 10 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
php随机显示图片的简单示例
2014/02/15 PHP
php返回json数据函数实例
2014/10/09 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
基于jquery的Repeater实现代码
2010/07/17 Javascript
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
Javascript基础教程之while语句
2015/01/18 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
浅谈JavaScript对象的创建方式
2016/06/13 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
如何使用vuex实现兄弟组件通信
2018/11/02 Javascript
vue写h5页面的方法总结
2019/02/12 Javascript
js作用域和作用域链及预解析
2019/04/11 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
Python中Django发送带图片和附件的邮件
2017/03/31 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
HTML5 video视频字幕的使用和制作方法
2018/05/03 HTML / CSS
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
红旗方阵解说词
2014/02/12 职场文书
承租经营合作者协议书
2014/10/01 职场文书
2014年体育部工作总结
2014/11/13 职场文书
食堂管理制度范本
2015/08/04 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python