六、pymysql 数据库实训案例
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库。
使用pip安装PyMySQL,命令如:pip install PyMySQL

PyMySQL操作MYSQL的流程及常用对象:
1.Connection对象
Connection对象即为数据库连接对象,在python中可以使用pymysql.connect()方法创建Connection对象

Connection对象支持的方法:

上述表中的事务机制可以确保数据一致性。

2.Cursor对象
cursor称为游标,它负责执行SQL语句和获取结果。

在MySQL数据库已经启动的前提下,拥有可以连接数据库的用户名和密码,并且有操作数据,pymysql使用的步骤如下:
1.导入模块
import pymysql
2.创建数据库连接对象
conn = pymysql.connect(host,port,user,password,database,charset)
3.使用数据库连接对象调用cursor()方法创建游标
curObj = conn.cursor()
4.编写SQL语句字符串,并执行SQL语句
strsql = '''增删改查的SQL语句 '''
curObj.execute(strsql,参数)
5.提交事务并关闭游标
con.commit()
curObj.close()
6.关闭数据库连接
conn.close()
【例】pymysql使用步骤示例
import pymysql
# 打开数据库连接,参数1:主机名或IP;参数2:用户名;参数3:密码;参数4;数据库名称
conn = pymysql.connect("localhost", "root", "123456", "jxgl")
# 通过cursor()函数创建一个游标对象cursor
cursor = conn.cursor()
# 使用execute()方法执行SQL查询
cursor.execute('SELECT VERSION()')
# 使用 fetchone()方法获取单条信息
db_version = cursor.fetchone()
print("MySQL数据库的版本号:%s" % db_version)
# 关闭数据库连接、
conn.close()
运行结果:
MySQL数据库的版本号:5.7.17-log
练习举例:
1、
import pymysql
# 打开数据库连接,参数1:主机名或IP;参数2:用户名;参数3:密码;参数4:数据库名称
db = pymysql.connect(host='localhost',
user='mysql',
password='root',
db='mrdb',
charset='utf8')
#db = pymysql.connect("localhost", "root", "root", 'utf8')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print ("Database version : %s " % data)
# 关闭数据库连接
db.close()
2、
import pymysql
#db='mrsoft'
db = pymysql.connect(host='localhost',
user='root',
password='root',
db='mrdb',
charset='utf8')
cursor = db.cursor()
sql = "select version()"
cursor.execute(sql)
data = cursor.fetchone()
print(data)
db2=cursor.execute("SELECT * FROM books ")
print(db2)
cursor.close()
db.close()
3、
import pymysql
# 打开数据库连接
# db = pymysql.connect("localhost", "root", "root", "mrdb")
db = pymysql.connect(host='localhost',
user='root',
password='root',
db='mrdb',
charset='utf8')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS books")
# 使用预处理语句创建表
sql = """
CREATE TABLE books (
id int(8) NOT NULL AUTO_INCREMENT,
name varchar(100) NOT NULL,
category varchar(50) NOT NULL,
price decimal(10,2) DEFAULT NULL,
publish_time date DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
"""
# 执行SQL语句
cursor.execute(sql)
# 关闭数据库连接
db.close()
4、
# 打开数据库连接
#db = pymysql.connect("localhost", "root", "root", "mrdb",charset="utf8")
db = pymysql.connect(host='localhost',
user='root',
password='root',
db='mrdb',
charset='utf8')
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 数据列表
data = [("零基础学 Python",'Python','79.80','2018-5-20'),
("Python 从入门到精通",'Python','69.80','2018-6-18'),
("零基础学PHP",'PHP','69.80','2017-5-23'),
("PHP项目开发实战入门",'PHP','79.80','2016-5-23'),
("零基础学Java",'Java','69.80','2017-5-23'),
]
try:
# 执行sql语句,插入多条数据
cursor.executemany("insert into books(name, category, price, publish_time) values (%s,%s,%s,%s)", data)
# 提交数据
db.commit()
except:
# 发生错误时回滚
db.rollback()
# 关闭数据库连接
db.close()
import pymysql
# 打开数据库连接
# db = pymysql.connect("localhost", "root", "root", "mrdb")
db = pymysql.connect(host='localhost',
user='root',
password='root',
db='mrdb',
charset='utf8')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL,
db2=cursor.execute("SELECT * FROM S ")
print(db2)
# 关闭数据库连接
db.close()
开发实训:
运用PyMySQL开发网店会员管理系统,该系统主要实现会员注册、会员登录、密码修改以及会员信息的删除等功能,首先创建数据库:ShopMember,同时定义用于存放会员信息的userinfo表,其表结构的脚本如下:
DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`userpwd` char(10) DEFAULT NULL,
`phone` char(11) DEFAULT NULL,
`email` varchar(50) DEFAULT NULL,
PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

