python MySQLdb Windows下安装教程及问题解决方法


Posted in Python onMay 09, 2015

使用python访问mysql,需要一系列安装

linux下MySQLdb安装见 
Python MySQLdb在Linux下的快速安装
https://3water.com/article/65743.htm

-------------------------------------------------------------
以下是windows环境下的:

1. 安装数据库mysql
下载地址:http://www.mysql.com/downloads/
可以顺带装个图形工具,我用的是MySQL-Front
 
2. 安装MySQLdb
 
好了,到了这一步,你有两个选择
A. 安装已编译好的版本(一分钟)
B. 从官网下,自己编译安装(介个…..半小时到半天不等,取决于你的系统环境以及RP)
 
若是系统32位的,有c++编译环境的,自认为RP不错的,可以选择自己编译安装,当然,遇到问题还是难免的,一步步搞还是能搞出来的
若是系统64位的,啥都木有的,建议下编译版本的,甭折腾
 
2.1安装已编译版本:
http://www.codegood.com/downloads
根据自己系统下载,双击安装,搞定
然后import MySQLdb,查看是否成功
 
我的,win7,64位,2.7版本

MySQL-python-1.2.3.win-amd64-py2.7.exe
 
2.2自己编译安装
话说搞现成的和自己编译差距不一一点半点的,特别是64位win7,搞死了
 
2.2.1安装setuptools

在安装MySQLdb之前必须安装setuptools,要不然会出现编译错误
http://pypi.python.org/pypi/setuptools
http://peak.telecommunity.com/dist/ez_setup.py 使用这个安装(64位系统必须用这个)
 
2.2.2安装MySQLdb

下载MySQLdb
http://sourceforge.net/projects/mysql-python/
 
解压后,cmd进入对应文件夹
如果32位系统且有gcc编译环境,直接

python setup.py build

2.2.3问题汇总
A. 64位系统,无法读取注册表的问题
异常信息如下:

F:\devtools\MySQL-python-1.2.3>pythonsetup.py build

Traceback (most recent call last):

 File "setup.py", line 15, in <module>

   metadata, options = get_config()

 File "F:\devtools\MySQL-python-1.2.3\setup_windows.py", line7, in get_config

   serverKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, options[' registry_ke

y'] )

WindowsError: [Error 2] The system cannotfind the file specified

解决方法:
其实分析代码,发现只是寻找mysql的安装地址而已  修改setup_windows.py如下
注解两行,加入一行,为第一步mysql的安装位置
   #serverKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,options['registry_key'] )

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

   mysql_root = r"F:\devtools\MySQL\MySQL Server 5.5"

B.没有gcc编译环境
unable to find vcvarsall.bat

解决方法:安装编译环境(一个老外的帖子)
1)  First ofall download MinGW. Youneed g++compiler and MingW make in setup.
2)  If youinstalled MinGW for example to “C:\MinGW” then add “C:\MinGW\bin”to your PATH in Windows.(安装路径加入环境变量)
3)  Now startyour Command Prompt and go the directory where you have your setup.py residing.
4)  Last andmost important step:
setup.py install build --compiler=mingw32
或者在setup.cfg中加入:
[build]

    compiler = mingw32

 

C.gcc: /Zl: No suchfile or directory错误

异常信息如下

F:\devtools\MinGW\bin\gcc.exe -mno-cygwin-mdll -O -Wall -Dversion_info=(1,2,3,'

final',0) -D__version__=1.2.3"-IF:\devtools\MySQL\MySQL Server 5.5\include" -IC

:\Python27\include -IC:\Python27\PC -c_mysql.c -o build\temp.win-amd64-2.7\Rele

ase\_mysql.o /Zl

gcc: error: /Zl: No such file or directory

error: command 'gcc' failed with exitstatus 1

参数是vc特有的编译参数,如果使用mingw的话因为是gcc所以不支持。可以在setup_windows.py中去掉
/Zl
 
解决方法:
修改setup_windows.py  改为空的
#extra_compile_args = [ '/Zl' ]

    extra_compile_args = [ '' ]

 目前就遇到这几个问题,望补充
 
3.  增删改查代码示例及结果(just for test)
CREATE TABLE `user` (  

  `Id` int(11) NOT NULL AUTO_INCREMENT,  

  `name` varchar(255) DEFAULT NULL,  

  `age` varchar(255) DEFAULT NULL,  

  PRIMARY KEY (`Id`)  

) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; 

#-*- coding:utf-8 -*-  

#dbtest.py  

#just used for a mysql test  

''''' 

Created on 2012-2-12 

 

@author: ken 

'''  

#mysqldb      

import time, MySQLdb, sys    

         

#connect   

conn=MySQLdb.connect(host="localhost",user="root",passwd="test_pwd",db="school",charset="utf8")    

cursor = conn.cursor()      

         

#add  

sql = "insert into user(name,age) values(%s,%s)"     

param = ("tom",str(20))      

n = cursor.execute(sql,param)      

print n      

         

#更新      

sql = "update user set name=%s where Id=9001"     

param = ("ken")      

n = cursor.execute(sql,param)      

print n      

  

#查询      

n = cursor.execute("select * from user")      

for row in cursor.fetchall():      

    for r in row:      

        print r,     

print ""  

  

  

#删除      

sql = "delete from user where name=%s"     

param =("ted")      

n = cursor.execute(sql,param)      

print n      

cursor.close()      

         

#关闭      

conn.close() 
Python 相关文章推荐
Python脚本处理空格的方法
Aug 08 Python
Python遍历文件夹和读写文件的实现方法
May 10 Python
python机器学习之决策树分类详解
Dec 20 Python
pip命令无法使用的解决方法
Jun 12 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
Jan 15 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
python实现批量文件重命名
Oct 31 Python
Python中bisect的使用方法
Dec 31 Python
python批量处理txt文件的实例代码
Jan 13 Python
浅谈python中频繁的print到底能浪费多长时间
Feb 21 Python
python实现二分类和多分类的ROC曲线教程
Jun 15 Python
Python列表的索引与切片
Apr 07 Python
Python MySQLdb Linux下安装笔记
May 09 #Python
python实现类的静态变量用法实例
May 08 #Python
python使用pil生成图片验证码的方法
May 08 #Python
python实现连接mongodb的方法
May 08 #Python
python写入xml文件的方法
May 08 #Python
python从sqlite读取并显示数据的方法
May 08 #Python
python创建一个最简单http webserver服务器的方法
May 08 #Python
You might like
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
PHP安全性漫谈
2012/06/28 PHP
屏蔽机器人从你的网站搜取email地址的php代码
2012/11/14 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
利用javascript查看html源文件
2006/11/08 Javascript
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
JS如何生成动态列表
2020/09/22 Javascript
vue+iview使用树形控件的具体使用
2020/11/02 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
使用cx_freeze把python打包exe示例
2014/01/24 Python
python批量提交沙箱问题实例
2014/10/08 Python
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
scrapy爬虫完整实例
2018/01/25 Python
VSCode下配置python调试运行环境的方法
2018/04/06 Python
在python中利用GDAL对tif文件进行读写的方法
2018/11/29 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
Python基于requests库爬取网站信息
2020/03/02 Python
python如何操作mysql
2020/08/17 Python
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
《花瓣飘香》教学反思
2014/04/15 职场文书
个人自我剖析材料
2014/09/30 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
选对餐饮营销策略,营业额才会上涨
2019/08/27 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
mysql insert 存在即不插入语法说明
2022/03/25 MySQL