什么是 PyMySQL?
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
PyMySQL 安装
在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。
PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。
如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL:
$ pip3 install PyMySQL$ python3 -m pip install pymysql
有时候受限于国内网络,可以使用从豆瓣源下载安装:
$ pip install pymysql -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
$ pip3 install pymysql -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
数据库连接
连接数据库前,请先确认以下事项:
- 您已经创建了数据库 bbs.
- 在bbs数据库中您已经创建了表 user
- EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。
- 连接数据库bbs使用的用户名为 “root” ,密码为 “123456”。
实例:
以下实例链接 Mysql 的 bbs 数据库:
[](javascript:void(0)😉
import pymysql
# 打开数据库连接
db = pymysql.connect("192.168.136.128","root","123456","bbs")
# 使用 cursor() 方法创建一个游标对象 cursor
cur = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cur.execute("select * from user")
#
# 使用 fetchone() 方法获取单条数据.
data = cur.fetchone() #存放到一个元组中
print(data)
# 关闭数据库连接
db.close()
[](javascript:void(0)😉
创建数据库表
如果数据库连接存在我们可以使用execute()方法来为数据库创建表,如下所示创建表user:
[](javascript:void(0)😉
import pymysql
# 打开数据库连接
db = pymysql.connect(host="192.168.136.128",
user="root",
password="123456",
database="bbs")
# 使用 cursor() 方法创建一个游标对象 cursor
cur = db.cursor()
# 使用 execute() 方法执行 SQL,如果表存在则删除
cur.execute("drop table if exists user")
# 使用预处理语句创建表
sql = """create table user (
first_name CHAR(20) NOT NULL,
last_name CHAR(20),
age INT,
sex CHAR(1),
income FLOAT )"""
cur.execute(sql)
print("*********************************")
# 关闭数据库连接
db.close()
[](javascript:void(0)😉
数据库插入操作
以下实例使用执行 SQL INSERT 语句向表 user 插入记录:
[](javascript:void(0)😉
import pymysql
# 打开数据库连接
db = pymysql.connect(host="192.168.6.221",
user="root",
password="123456",
database="bbs")
# 使用cursor()方法获取操作游标
cur = db.cursor()
# SQL 插入语句
sql = "INSERT INTO user(first_name,last_name, age, sex, income)VALUES ('zhu', 'xia', 25, 'M', 10000000000000000000)"
# 执行sql语句
cur.execute(sql)
# 提交到数据库执行
db.commit()
# 关闭数据库连接
db.close()
[](javascript:void(0)😉
数据库查询操作
Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
-
fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
-
fetchall(): 接收全部的返回结果行.
-
rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。
-
[](javascript:void(0)😉
import pymysql # 打开数据库连接 db = pymysql.connect(host="192.168.0.104", user="root", password="123456", database="agileone") # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 查询语句 sql = "select * from bbs where income > %s" % (1000) # 执行SQL语句 cursor.execute(sql) # 获取所有记录列表 results = cursor.fetchall() for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # 打印结果 print("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % (fname, lname, age, sex, income)) # 关闭数据库连接 db.close()
[](javascript:void(0)😉
数据库更新操作
[](javascript:void(0)😉
import pymysql
db = pymysql.connect(host="192.168.136.128",
user="root",
password="123456",
database="bbs")
# 使用cursor()方法获取操作游标
cur = db.cursor()
# SQL 更新语句
sql = "UPDATE user SET income = 3000 WHERE last_name='xia'"
# 执行SQL语句
cur.execute(sql)
# 提交到数据库执行
db.commit()
# 关闭数据库连接
db.close()
[](javascript:void(0)😉
删除操作
删除操作用于删除数据表中的数据
[](javascript:void(0)😉
import pymysql
db = pymysql.connect(host="192.168.136.128",
user="root",
password="123456",
database="bbs")
# 使用cursor()方法获取操作游标
cur = db.cursor()
# SQL 删除语句
sql = "DELETE FROM user WHERE last_name='xia'"
# 执行SQL语句
cur.execute(sql)
# 提交修改
db.commit()
# 关闭连接
db.close()
[](javascript:void(0)😉
***注意:如果函数内不加上db.commit()这一行代码,在新增、修改或者删除时不会报错,也会提示成功,但数据库中是不会看到自己新增、修改或者删除的数据的,这一句代码的作用,就类似于保存当前修改,不加上当前这一行代码,当前修改或者新增操作就没有实现。
)
# 关闭连接
db.close()
[[外链图片转存中…(img-7zVk65pC-1602590049361)]](javascript:void(0)😉
***注意:如果函数内不加上db.commit()这一行代码,在新增、修改或者删除时不会报错,也会提示成功,但数据库中是不会看到自己新增、修改或者删除的数据的,这一句代码的作用,就类似于保存当前修改,不加上当前这一行代码,当前修改或者新增操作就没有实现。