python操作数据库MySql,windows和ubuntu下安装MySQLdb库报错:EnvironmentError: mysql_config not found,Python.h: No such file or directory,Microsoft Visual C++ 9.0 is required

python 的 MySQLdb 库非常方便操作 mysql。不过安装确实非常多问题,这里记录 windows 下和 ubuntu 下安装 MySQLdb 库的过程。

ubuntu 下安装 python 的 MYSQLdb 库

首先想到的是:

 sudo pip install Mysql-python

结果报错 EnvironmentError: mysql_config not found

查阅资料,发现缺少 libmysqlclient-dev,安装之

sudo apt-get install libmysqlclient-dev

继续安装 MYSQLdb,发现继续报错:

...
_mysql.c:29:20: fatal error: Python.h: No such file or directory
   #include "Python.h"
                      ^
  compilation terminated.
  error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
...

Python.h是python开发包,可能系统没有安装此开发包,执行如下命令:

sudo dpkg -l | grep python-dev

发现的确没有 python 开发包,安装之。

sudo apt-get install python-dev

再执行安装 MYSQLdb 库,发现成功了。

windows 下安装 python 的 MYSQLdb 库

windows 下真的非常多坑。一开始也是尝试了直接使用 pip install 安装,结果却提示错误:

error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython

按照提示,下载安装 Microsoft Visual C++ 9.0,结果继续报错。于是放弃这种安装方式,直接使用 whl 安装包安装。流程如下:

1. 输入以下命令,打印出我的电脑支持的 .whl 文件版本

>>import pip;
>>print(pip.pep425tags.get_supported())

执行,输出:

[('cp27', 'cp27m', 'win32'), ('cp27', 'none', 'win32'), ('py2', 'none', 
'win32'), ('cp27', 'none', 'any'), ('cp2', 'none', 'any'), ('py27', 'none', 
'any'), ('py2', 'none', 'any'), ('py26', 'none', 'any'), ('py25', 'none', 
'any'), ('py24', 'none', 'any'), ('py23', 'none', 'any'), ('py22', 'none', 
'any'), ('py21', 'none', 'any'), ('py20', 'none', 'any')]

2. 从上述打印结果中挑出一个版本 .whl 文件并下载

发现 (‘cp27’, ‘none’, ‘win32’),这个版本,然后去 这里 下载。

MySQL_python-1.2.5-cp27-none-win32.whl

注意,文件名不能修改,这是 whl 文件的特性。

3. 进入下载的 .whl 文件所在目录,输入如下命令安装

pip install MySQL_python-1.2.5-cp27-none-win32.whl

发现成功了。

python 使用 MySQLdb 库操作 mysql 数据库实例

代码如下:

#encoding=utf8
import MySQLdb

# 连接数据库
db = MySQLdb.connect(host, user, password, database, charset="utf8")
# 使用cursor()方法获取操作游标
cursor = db.cursor()    
# 使用execute方法执行SQL语句 
cursor.execute(sql)    
# 提交到数据库执行         
db.commit()     
# 使用 fetchone() fetchall()方法获取数据         
data = cursor.fetchall()
# 关闭数据库
db.close()

其中 sql 是一条数据库语句,如 sql = “select * from testTable;”

阅读更多:   Python
添加新评论