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 代码相结合。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容