MySQL学习笔记(5)—— Python 操作 MySQL
MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA, PHP 和 Python。 在这些语言中,Mysql在PHP的web开发中是应用最广泛,因此关于PHP操作 MySQL 的教程已经多到不需要笔者继续赘述了。在本学习笔记中,计划使用 Python对 MySQL 数据库进行操作。主要是因为笔者的工科背景,Python 广泛应用于各种数据处理领域。本章更侧重于链接方式的搭建和功能的概述,具体使用方法会在后续 MySQL 操作中进行关联性介绍。
Python 数据库接口和API
Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库。下面简单列出几种常用数据库,你可以访问Python数据库接口及API查看详细的支持数据库列表。
- mSQL
- MySQL
- Microsoft SQL Server
- Oracle
DB-API是一个规范,它定义了一系列必须的对象和数据库存取方式,以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口。因此,不同的数据库你需要下载不同的DB API模块,例如需要访问Oracle数据库和Mysql数据,就需要下载Oracle和MySQL数据库模块。Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。
安装 MySQLdb
为了用DB-API编写MySQL脚本,必须确保已经安装了 MySQL 和 Python DB-API接口包。其中前面章节已经完成了 MySQL 的安装和配置,这里将介绍一种 Python DB-API —— MySQLdb。MySQLdb 是用于Python链接 MySQL 数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 建立。
检验是否已安装 MySQLdb
采用交互式或脚本的方法运行以下 Python 代码(命名为mysql_test.py),检验系统内是否已经安装 MySQLdb。
#!/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
如果尚未安装 MySQLdb,则请访问 http://sourceforge.net/projects/mysql-python ,(Linux平台可以访问:https://pypi.python.org/pypi/MySQL-python )从这里可选择适合您的平台的安装包,分为预编译的二进制文件和源代码安装包。
如果您选择二进制文件发行版本的话,安装过程基本安装提示即可完成。如果从源代码进行安装的话,则需要切换到MySQLdb发行版本的顶级目录,并键入下列命令进行解压缩:
tar -xvf MySQL-python-1.2.4b4.tar.gz
cd MySQL-python-1.2.4b4
阅读文件夹下面的README和INSTALL文件即可明白安装方法和相关需求,首先配置site.cfg文件中mysql_config的路径。输入以下代码确认是否已经存在mysql_config文件:
which mysql_config
若存在,则显示文件路径(例如,/usr/bin/mysql_config);若不存在则需要先安装相关包:
sudo apt-get install libmysqld-dev
修改site.cfg文件中配置路径,先解除mysql_config=XXX前的注释,然后更新路径如下:
mysql_config=/usr/bin/mysql_config
配置完成后,剩下的安装都交给 Python 吧:
python setup.py build
sudo python setup.py install
Tips: 安装过程若出现错误,可能是版本不对应,也可能是缺少python-dev依赖包。
如果一切顺利,那么再次运行上述检验代码 mysql_test.py 就不会报错了,一切就绪了。
Python 链接 MySQL 数据库
连接数据库前,请先确认以下事项:
- 您已经阅读并完成第四章的学习,在 mysql 数据库中创建了新用户 guest
- 连接数据库 mysql 使用的用户名为 "guest" ,密码为 "guest123",也可以自己设定或者直接使用root用户名及其密码
- 已经完成并检验了 Python MySQLdb 模块的安装和引用
Python DB-API的使用流程如下:
- 引入 API 模块(import MySQLdb)
- 获取与数据库的连接(MySQLdb.connect)
- 执行SQL语句和存储过程(cursor.execute)
- 关闭数据库连接(db.close())
创建以下 Python 示例代码(可以在上述mysql_test.py文件中添加修改)。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
# open & link MySQL Server
db = MySQLdb.connect("localhost","guest","guest123","mysql" )
# get the cursor of operation
cursor = db.cursor()
# execute SQL operation
cursor.execute("SELECT user FROM user WHERE user = 'guest'")
# capture one data with fetchone()
data = cursor.fetchone()
# display the captured results
print "MySQL new username: %s " % data
# close Database
db.close()
运行 Python代码并得到输出如下:
$ python mysql_test.py
MySQL new username: guest
至此,已经完成了使用 Python 来操作 MySQL 数据库!从上述代码可见,Python操作数据库的方法还是很简洁的,与打开一个文件进行读写操作类似。其中,对数据库内的操作还是通过 SQL 语言完成的,只是放到了接口函数 cursor.execute() 内而已。
小结
本章介绍采用Python操作 MySQL 服务器,但这里只是个开始,介绍了操作的流程和思路,更多的还是需要了解 SQL 语言。后续章节将逐步介绍 MySQL 中的操作语法,并与 Python 代码相结合。