博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MAMP中Python安装MySQLdb
阅读量:5867 次
发布时间:2019-06-19

本文共 3518 字,大约阅读时间需要 11 分钟。

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 
import MySQLdbImportError: No module named MySQLdb

安装MySQLdb,请访问 ,(Linux平台可以访问:)从这里可选择适合您的平台的安装包,分为预编译的二进制文件和源代码安装包。

如果您选择二进制文件发行版本的话,安装过程基本安装提示即可完成。如果从源代码进行安装的话,则需要切换到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 
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 
import MySQLdb File "build/bdist.macosx-10.10-intel/egg/MySQLdb/__init__.py", line 19, in
File "build/bdist.macosx-10.10-intel/egg/_mysql.py", line 7, in
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 sysimport sysreload(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]

 

转载于:https://www.cnblogs.com/sirius-swu/p/6833138.html

你可能感兴趣的文章
MSSQL连接数据库密码获取工具与原文数个错误纠正
查看>>
DexClassLoader热修复的入门到放弃
查看>>
Spring Boot 中使用 Dubbo 详解
查看>>
【Kaggle入门级竞赛top5%排名经验分享】— 分析篇
查看>>
真正的 Tornado 异步非阻塞
查看>>
使用AVPlayer自定义支持全屏的播放器(四)
查看>>
【漫画】程序员的情人劫
查看>>
闪电侠 Netty 小册里的骚操作
查看>>
Apollo 4 客户端 SDK 设计
查看>>
Linux运维-搭建高可用Redis缓存
查看>>
2018前端越来越流行的的技术
查看>>
iOS-单元测试
查看>>
迟来的《Core NFC》
查看>>
Node.js - fs 模块学习
查看>>
Nodejs的全局变量
查看>>
前端面试之路二(javaScript基础整理)
查看>>
String字符串中获取所有匹配结果的索引值
查看>>
备战明年三月春招
查看>>
java向上转型和向下转型
查看>>
前端面试题整理汇总
查看>>