2.2 操作MySQL数据库
在 Python 3.x 版本中,使用内置库PyMySQL来连接MySQL数据库服务器,Python 2版本中使用库mysqldb。PyMySQL完全遵循Python数据库API v2.0规范,并包含了pure-Python MySQL客户端库。在本节的内容中,将详细讲解在Python程序中操作MySQL数据库的知识。
2.2.1 搭建PyMySQL环境
在使用PyMySQL之前,必须先确保已经安装PyMySQL。PyMySQL的下载地址是https://github.com/PyMySQL/PyMySQL。如果还没有安装,可以使用如下命令安装最新版的 PyMySQL:
pip install PyMySQL
如果当前系统不支持pip命令,可以使用如下两种方式进行安装。
(1)使用git命令下载安装包安装:
$ git clone https://github.com/PyMySQL/PyMySQL
$ cd PyMySQL/
$ python3 setup.py install
(2)如果需要指定版本号,可以使用curl命令进行安装:
$ # X.X 为 PyMySQL 的版本号
$ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz
$ cd PyMySQL*
$ python3 setup.py install
$ # 现在可以删除 PyMySQL* 目录
注意:你必须确保拥有root权限才可以安装上述模块。另外,在安装的过程中可能会出现“ImportError: No module named setuptools”的错误提示,这个提示的意思是没有安装setuptools,你可以访问https://pypi.python.org/pypi/setuptools 找到各个系统的安装方法。例如在Linux系统中的安装实例是:
$ wget https://bootstrap.pypa.io/ez_setup.py
$ python3 ez_setup.py
2.2.2 实现数据库连接
在连接数据库之前,请按照如下所示的步骤进行操作。
(1)安装MySQL数据库和PyMySQL。
(2)在MySQL数据库中创建数据库TESTDB。
(3)在TESTDB数据库中创建表EMPLOYEE。
(4)在表EMPLOYEE中分别添加5个字段,分别是FIRST_NAME、LAST_NAME、AGE、SEX和INCOME。在MySQL数据库,表EMPLOYEE的界面效果如图2-2所示。
图2-2 表EMPLOYEE的界面效果
(5)假设本地MySQL数据库的登录用户名为“root”,密码为“66688888”。例如在下面的实例文件mysql.py中,演示了显示PyMySQL数据库版本号的过程。
源码路径:daima\3\2-2\mysql.py
import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","66688888","TESTDB" )
#使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()
#使用 execute()方法执行SQL查询
cursor.execute("SELECT VERSION()")
#使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print ("Database version : %s " % data)
#关闭数据库连接
db.close()
执行后会输出:
Database version : 5.7.17-log
2.2.3 创建数据库表
在Python程序中,可以使用方法execute()在数据库中创建一个新表。例如在下面的实例文件new.py中,演示了在PyMySQL数据库中创建新表EMPLOYEE的过程。
源码路径:daima\3\2-2\new.py
import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","66688888","TESTDB" )
#使用cursor()方法创建一个游标对象 cursor
cursor = db.cursor()
#使用 execute() 方法执行SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
#使用预处理语句创建表
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
cursor.execute(sql)
#关闭数据库连接
db.close()
执行上述代码后,将在MySQL数据库中创建一个名为“EMPLOYEE”的新表,执行后的效果如图2-3所示。
图2-3 执行效果