Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。

MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。

一、如何安装MySQLdb?

为了用DB-API编写MySQL脚本,必须确保已经安装了MySQL。复制以下代码,并执行:

#!/usr/bin/python
# -*- coding: UTF-8 -*- import MySQLdb

如果执行后的输出结果如下所示,意味着你没有安装 MySQLdb 模块:

Traceback (most recent call last):
File "test.py", line 3, in <module>
import MySQLdb
ImportError: No module named MySQLdb

安装MySQLdb,请访问 http://sourceforge.net/projects/mysql-python ,(Linux平台可以访问:https://pypi.python.org/pypi/MySQL-python)从这里可选择适合您的平台的安装包,分为预编译的二进制文件和源代码安装包。

如果您选择二进制文件发行版本的话,安装过程基本安装提示即可完成。如果从源代码进行安装的话,则需要切换到MySQLdb发行版本的顶级目录,并键入下列命令:

$ gunzip MySQL-python-1.2.2.tar.gz
$ tar -xvf MySQL-python-1.2.2.tar
$ cd MySQL-python-1.2.2
$ python setup.py build
$ python setup.py install

注意:请确保您有root权限来安装上述模块。

运行错误信息:

_mysql.c:44:10: fatal error: 'my_config.h' file not found

原因是因为MySQL不是单独安装的,是安装的一个MAMP集成开发环境包,在MAMP中PHP和MySQL的头文件都是没有的,所以会报出这个错误。我们有两种解决方式,一种是重新编译MySQL,一种是单独安装mysq-connector-c,因为开发环境包已经自带了MySQL了,我们就不再编译安装了,单独安装就ok。

执行以下语句:

brew install mysql-connector-c

二、数据库连接

出现以下错误提示:

    sh: mysql_config: command not found
Traceback (most recent call last):
File "setup.py", line 17, in <module>
metadata, options = get_config()
File "/Users/macbook/Downloads/MySQL-python-1.2.5/setup_posix.py", line 43, in get_config
libs = mysql_config("libs_r")
File "/Users/macbook/Downloads/MySQL-python-1.2.5/setup_posix.py", line 25, in mysql_config
raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found

修改setup_posix.py文件,代码如下

mysql_config.path = "/Applications/MAMP/Library/bin/mysql_config"

如果不知道其目录,可以使用一下命令查找

sudo find / -name mysql_config

完成该步骤之后可能仍然会出错:

    Traceback (most recent call last):
File "./hello.py", line 3, in <module>
import MySQLdb
File "build/bdist.macosx-10.10-intel/egg/MySQLdb/__init__.py", line 19, in <module>
File "build/bdist.macosx-10.10-intel/egg/_mysql.py", line 7, in <module>
File "build/bdist.macosx-10.10-intel/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/macbook/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.10-intel.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
Referenced from: /Users/macbook/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.10-intel.egg-tmp/_mysql.so
Reason: image not found

此时,需要执行命令

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

注意:该软连接的实际目录部分以自己机器上的目录为准

另外:MAMP出现如下错误提示:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'

找不到socket文件,查找本机文件所在位置

sudo find / -name mysql.sock

将文件地址作为参数传递到数据库连接语句

con=MySQLdb.connect(host='localhost',user='root',passwd='root',db='StudentDB',port=3306,unix_socket="/Applications/MAMP/tmp/mysql/mysql.sock",charset='utf8')

三、实例:

以下实例链接Mysql的StudentDB数据库:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import MySQLdb
import sys
import sys reload(sys) sys.setdefaultencoding('utf-8') con=MySQLdb.connect(host='localhost',user='root',passwd='root',db='StudentDB',port=3306,unix_socket="/Applications/MAMP/tmp/mysql/mysql.sock",charset='utf8') #获取 mysql 的链接对象
with con:
#获取执行查询的对象
cur = con.cursor()
#执行那个查询,这里用的是 select 语句
cur.execute("SELECT * FROM Student")
#使用 cur.rowcount 获取结果集的条数
numrows = int(cur.rowcount)
#循环 numrows 次,每次取出一行数据
for i in range(numrows):
#每次取出一行,放到 row 中,这是一个元组(id,name)
row = cur.fetchone()
#直接输出两个元素
print row[0], row[1]

MAMP中Python安装MySQLdb的更多相关文章

  1. windows(32位 64位)下python安装mysqldb模块

    windows(32位 64位)下python安装mysqldb模块 www.111cn.net 编辑:mengchu9 来源:转载 本文章来给各位使用在此windows系统中的python来安装一个 ...

  2. python安装MySQLdb:在windows下或linux下(以及eclipse中pydev使用msqldb的配置方法)

    写的非常好,可以解决问题: windows下:http://blog.csdn.net/wklken/article/details/7253245 linux下:http://blog.csdn.n ...

  3. 如何在使用MAMP环境下安装MySQLdb

    我的电脑上没有安装XAMPP,而是安装了MAMP PRO,其实两者都差不多,都是PHP+MySQL+Apache的集成环境,只是MAMP的GUI界面更华丽一些,但是也更复杂一些. 好了不说这些,说说问 ...

  4. python安装MySQLdb(即mysql-Python)模块的一些问题

    1.超时问题 如果出现:ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out ...

  5. python学习笔记之——python安装mysqldb后,pycharm导入还是报错问题

    在安装mysqldb过程中遇到,本来已经安装了mysqldb了,但是在pycharm中import   MySQLdb还是报错找不到该模块的问题.解决方法如下:1.file->settings ...

  6. Windows下python安装MySQLdb

    安装MySQLdb需要在电脑上安装MySQL connector C,只需要这个connector就好,不需要把mysql装全. 另外,需要安装VC for python提供编译. 到官网上下载脚本进 ...

  7. linux中python安装

    1.查看当前环境中是否存在python安装包 [zyj@localhost ~]$ rpm -qa | grep python gnome-python2-gnome--.el6.x86_64 pyt ...

  8. 解决:python安装mysqldb模块报 EnvironmentError: mysql_config not found

    最近学习python操作mysql需要安装mysqldb模块 出现EnvironmentError: mysql_config not found 经网上查看,需要安装mysql客户端开发库libmy ...

  9. python安装MySQLdb模块

    以Ubuntu下安装为例: 下载地址:https://pypi.python.org/pypi/MySQL-python/ 解压后直接进入解压目录运行安装命令. python setup.py ins ...

随机推荐

  1. session问题总既然(深入理解)&Token问题理解&sso单点登陆理解实现

    一.Session使http协议成为有状态协议(浏览器cookie本地这个session,服务器端也有这个session) 1.ajax前端登陆无法保存session,造成无法维持登陆状态(http本 ...

  2. webpack 输出多个文件

    http://react-china.org/t/webpack/1870/2 webpack 文章 entry = { "button": "demo/button/i ...

  3. Mysql中错误日志、binlog日志、查询日志、慢查询日志简单介绍

    前言 数据库的日志是帮助数据库管理员,追踪分析数据库以前发生的各种事件的有力根据.mysql中提供了错误日志.binlog日志(二进制日志).查处日志.慢查询日志.在此,我力求解决下面问题:各个日志的 ...

  4. C#如何编辑tab选项卡

    1 左侧的TabControl   2 如果要添加或删除选项卡个数,则定位到整个TabControl,然后编辑TabPages  

  5. Codeforces 455B A Lot of Games 字典树上博弈

    题目链接:点击打开链接 题意: 给定n个字符串,k局游戏 对于每局游戏,2个玩家轮流给一个空串加入一个小写字母使得加完后的字符串不是n个字符串的前缀. 输家下一轮先手 问是先手必胜还是后手必胜 思路: ...

  6. js 对有“命名空间”的表单做深度解析

    问题描写叙述:一个大表单中,可能包括几十个字段.这些字段在数据库中的映射非常可能不在一张表中,为了降低后台操作的工作量,我们应该在前台提交的时候对数据做初步处理. 举例说明: watermark/2/ ...

  7. grep结合awk简单用法

    一.grep简介: grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行 ...

  8. 2016/1/6 输出菱形 while语句计算阶乘分数之和

    public class LingXing { public static void main(String[] args) { //打印菱形 for (int x=1;x<6;x++){ fo ...

  9. luence全文检索(简介)

    刚开始做全文检索也是找了很多资料但是网上的都不是很齐全luence是个很不多的工具 Lucene4.0的官网文档:http://lucene.apache.org/core/4_0_0/core/ov ...

  10. android删除短信

    代码如下: //删除短信 getContentResolver().delete(Uri.parse("content://sms/#"),"address=?" ...