我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。
上篇文章我们讨论了数据库编程接口操作的相关知识。今天我们将学习一下数据库MySQL使用的相关知识。
在使用MySQL之前,我们需要支持python 的MySQL 驱动来连接到MySQL服务器。我们可以使用PyMySQL。安装起来比较简单,在“命令提示符”窗口输入如下命令:
pip install PyMySQL
以上图所示,安装PyMySQL成功。
1、连接数据库
上一节我们创建了数据库root,现在我们使用PyMySQL来连接数据库。
操作步骤如下:
连接数据库>创建一个游标对象>使用execute()方法执行SQL>使用fetchone()方法获取单条数据
import pymysql
#打开数据库进行连接,host,user,password,database参数指明
db = pymysql.connect(host="localhost",user="root",password="root",database='mysql')
#使用cursor()方法创建一个游标对象
cursor = db.cursor()
#使用execute()方法执行SQL查询
cursor.execute("SELECT VERSION()")
#使用fetchone()方法获取单条数据
data = cursor.fetchone()
print("Database version: %s "%data)
查看输出:
Database version: 8.0.39
2、创建数据表
数据库连接成功后,我们就可以为数据库创建数据表了,下面举例说明。
如创建scores 表,如下代码:
#打开数据库进行连接,host,user,password,database参数指明
db = pymysql.connect(host="localhost",user="root",password="root",database='mysql')
#使用cursor()方法创建一个游标对象
cursor = db.cursor()
#execute()方法执行SQL查询,如果scores 存在,则删除表
cursor.execute("DROP TABLE IF EXISTS scores")
#使用预处理语句创建表
sql = """
CREATE TABLE scores(
id int(8) NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
English int(8) NOT NULL,
Math int(8) NOT NULL,
Chinese int(8) NOT NULL,
PRIMARY KEY(id)
)ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
"""
#执行SQL语句
cursor.execute(sql)
#关闭数据库
db.close()
以上代码执行后可以看到数据库下面有产生对应的表scores
3、操作MySQL数据表
MySQL 数据表的操作主要是数据的新增、删除、修改和查找。
这里举例说明新增一些记录,如批量添加多条记录。
executemany()方法的语法格式:
executemany(operation,seq_of_params)
参数说明: operation:操作的SQL语句
seq_of_params:参数序列
举例说明:
如我们像上面说的scores添加几位学生的分数。
import pymysql
#打开数据库进行连接,host,user,password,database参数指明
db = mymysql.connect(host="localhost",user="root",password="root",database='mysql',charset='utf8')
#使用cursor()方法创建一个游标对象
cursor = db.cursor()
#数据列表
data = [("xiaoming",100,66,88),
("xiaohua",90,76,89),
("xiaomi",70,86,80),
]
try:
#执行插入动作
cursor.executemany(
"insert into scores(name,English,Math,Chinese) values(%s,%s,%s,%s)",data)
#提交数据
db.commit()
except:
#发生错误时回滚
db.rollback()
#关闭数据库
db.close()
查看数据库数据:有正常插入3条数据,
4、查询数据表
查询数据库和新增数据类似,只是SQL语句不同,以及后续处理展示一下查询到的数据,下面举例说明:
import pymysql
#打开数据库进行连接,host,user,password,database参数指明
db = pymysql.connect(host="localhost",user="root",password="root",database='mysql',charset='utf8')
#使用cursor()方法创建一个游标对象
cursor = db.cursor()
#执行查询数据
cursor.execute("SELECT * FROM scores")
# 获取查询结果 此时获取全部数据
rows = cursor.fetchall()
# 获取查询结果 此时获取第一条数据
# rows = cursor.fetchone()
# 获取查询结果 此时获取多条数据
# rows = cursor.fetchmany(2)
# 打印结果
print(rows)
# 关闭游标和数据库连接
cursor.close()
db.close()
输出结果参考:
查询到了,对应的数据信息由元组表示:
((8, 'xiaohua', 90, 76, 89), (7, 'xiaoming', 100, 66, 88), (9, 'xiaomi', 70, 86, 80), (10, 'xiaoming', 100, 66, 88), (11, 'xiaohua', 90, 76, 89), (12, 'xiaomi', 70, 86, 80))
今天先写学习到这里了,每天进步一点点。明天也要加油啊!明天我们继续学习python。