1. 简介
PyMySQL是Python编程语言中用于连接MySQL数据库的模块,它实现了Python DB API 2.0规范,并包含了 pure-Python MySQL 客户端库。PyMySQL使用纯Python编写,可以在Python的各种实现环境中运行,包括CPython、PyPy、IronPython、Jython等,这使得PyMySQL是使用 Python 进行 MySQL 数据库应用开发的一个非常好的选择。
PyMySQL模块中有许多有用的函数,比如:connect(),cursor(),executemany()等。
2. PyMySQL模块的安装
PyMySQL可以使用pip安装,使用pip安装很方便,只需要在命令行中输入:
pip install pymysql
如果想要卸载,可以使用:
pip uninstall pymysql
3. 连接MySQL数据库
在使用PyMySQL模块连接MySQL数据库之前,需要为MySQL数据库创建一个用户,并授予该用户访问数据库的权限。在连接MySQL之前,要先确定好主机名、数据库名、用户名、密码和端口号等参数,同时还需要指定编码方式,一般选择UTF-8。创建好相应的用户和权限后,就可以使用以下代码连接到MySQL数据库:
import pymysql
# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="root", database="test", port=3306, charset='utf8')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print("Database version : %s " % data)
# 关闭数据库连接
db.close()
注意:在使用PyMySQL之前,需要先导入pymysql模块。
代码中,mysql的host是指主机名,user是用户名,password是密码,database是数据库名,port是端口号,charset是指编码方式。
在连接成功之后,可以使用cursor()方法创建一个游标对象,该对象用于执行mysql语句。
在此处,我们使用execute()方法执行一个SQL查询语句,使用fetchone()方法从游标对象中获取一条查询结果。
4. 创建表格
使用PyMySQL模块创建一个名为employee的表格,该表格包含4个字段,分别是id、name、age、sex:
import pymysql
# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="root", database="test", port=3306, charset='utf8')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL,如果表已经存在则删除
cursor.execute("DROP TABLE IF EXISTS employee")
# 创建表格
sql = """CREATE TABLE employee (
id INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
name CHAR(20) NOT NULL,
age INT,
sex CHAR(1))"""
cursor.execute(sql)
# 关闭数据库连接
db.close()
注意:在创建表格和插入数据时,要尽可能的避免直接将数据拼接到SQL语句中,这样可能会导致SQL注入等问题。可以使用参数来代替数据,从而避免这些问题。
5. 插入数据
使用以下代码向employee表格中插入数据:
import pymysql
# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="root", database="test", port=3306, charset='utf8')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 插入数据
sql = "INSERT INTO employee(name, age, sex) VALUES (%s, %s, %s)"
val = ('Tom', 25, 'M')
cursor.execute(sql, val)
# 提交到数据库执行
db.commit()
# 关闭数据库连接
db.close()
代码中,使用execute()方法执行一条insert语句来插入数据。
数据库操作完成后,需要使用commit()方法提交更改才能生效,如果不调用commit()方法,程序虽然不会抛出错误,但数据实际上并不会被插入到数据库中。
6. 查询数据
可以使用SELECT语句来查询数据库中的数据。以下代码查询employee表格中的所有数据:
import pymysql
# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="root", database="test", port=3306, charset='utf8')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 查询数据
sql = "SELECT * FROM employee"
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
id = row[0]
name = row[1]
age = row[2]
sex = row[3]
print("id=%d,name=%s,age=%d,sex=%s" % (id, name, age, sex))
# 关闭数据库连接
db.close()
代码中,使用execute()方法执行一条SELECT查询语句,然后使用fetchall()方法从游标对象中获取所有的查询结果。然后,使用for循环逐个遍历查询结果,并将结果打印到控制台上。
7. 更新数据
可以使用UPDATE语句来更新数据库中的数据。以下代码将名字为Tom的员工的年龄更新为35岁:
import pymysql
# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="root", database="test", port=3306, charset='utf8')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 更新数据
sql = "UPDATE employee SET age = %s WHERE name = %s"
val = (35, 'Tom')
cursor.execute(sql, val)
# 提交到数据库执行
db.commit()
# 关闭数据库连接
db.close()
代码中,使用execute()方法执行一条UPDATE语句来更新数据,并将结果提交到数据库中。
8. 删除数据
可以使用DELETE语句来删除数据库中的数据。以下代码将名字为Tom的员工从employee表格中删除:
import pymysql
# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="root", database="test", port=3306, charset='utf8')
# 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()
# 删除数据
sql = "DELETE FROM employee WHERE name = '%s'" % ('Tom')
cursor.execute(sql)
# 提交修改
db.commit()
# 关闭连接
db.close()
代码中,使用execute()方法执行DELETE语句来删除名字为Tom的员工,并提交修改。
9. 总结
PyMySQL是Python编程语言中用于连接MySQL数据库的模块,它可以在Python的各种实现环境中运行,包括Cpython、PyPy、IronPython、Jython等。PyMySQL使用纯Python编写,方便使用者进行安装。
本文按照连接MySQL、创建表格、插入数据、查询数据、更新数据和删除数据的顺序,对PyMySQL模块的使用进行了介绍。在其中,需要注意的是,使用PyMySQL时要避免直接将数据拼接到SQL语句中,这样可能会导致SQL注入等问题,应尽量使用参数来代替数据。