学习MySQL(六):Python的连接与操作

点击蓝字,关注我
Every Day
清明
[作者] 杜牧 [朝代] 唐
清明时节雨纷纷,路上行人欲断魂。
借问酒家何处有?牧童遥指杏花村。

安装第三方模块pymysql
pip install pymysql或者通过PyCharm后台操作

连接mysql
# 语法示例import pymysqldb = pymysql.connect(host='localhost', user='root', password="123456", database='school', port=3306, charset="utf8" )

数据操作的基本语法
import pymysql# 打开数据库连接db = pymysql.connect(host="localhost", user="root", password="123456", database="school")# 使用cursor()方法创建一个游标对象cursorcursor = db.cursor()# 撰写SQL语句sql = "select * from student"# 执行SQL语句cursor.execute(sql)# 获取数据results = cursor.fetchall()# 打印结果print(results)# 关闭数据库连接db.close()
游标的概念
游标的设计是一种数据缓冲区的思想,用来存放SQL语句执行的结果。游标是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。
尽管游标能遍历结果中的所有行,但一次只指向一行。
游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作。
-
执行SQL代码
-
遍历获取查询结果

增
-
增加表
import pymysql# 打开数据库连接db = pymysql.connect(host="localhost", user="root", password="123456", database="school")# 使用cursor()方法创建一个游标对象cursorcursor = db.cursor()# 使用预处理语句创建表sql = "create table ceshi (id int primary key, name char(8), age int)"# 执行SQL语句cursor.execute(sql)# 关闭数据库连接db.close()
-
增加数据
import pymysql# 打开数据库连接db = pymysql.connect(host="localhost", user="root", password="123456", database="school")# 使用cursor()方法获取操作游标cursor = db.cursor()# SQL插入语句sql = "insert into ceshi values(1, 'Toiny', 25)"try: cursor.execute(sql) # 执行SQL语句 db.commit() # 提交到数据库执行except: db.rollback() # 如果发生错误则回滚# 关闭数据库连接db.close()
知识点:
-
支持事务的储存引擎,MySQL8.0默认是innodb。
-
commit() 提交事务。
-
记录的增删改操作需要提交事务,其他不需要。
-
rollbak() 回退事务,当事务执行到一半报错时整个事务操作都会回退。

删
import pymysql# 打开数据库连接db = pymysql.connect(host="localhost", user="root", password="123456", database="school")# 使用cursor()方法获取操作游标cursor = db.cursor()# SQL删除语句sql = "delete from ceshi where age >= 20"try: cursor.execute(sql) # 执行SQL语句 db.commit() # 提交到数据库执行except: db.rollback() # 如果发生错误则回滚# 关闭数据库连接db.close()

改
import pymysql# 打开数据库连接db = pymysql.connect(host="localhost", user="root", password="123456", database="school")# 使用cursor()方法获取操作游标cursor = db.cursor()# SQL更新语句sql = "update ceshi set age = 25 where age = 22"sql1 = "select * from ceshi"try: cursor.execute(sql) # 执行SQL语句 cursor.execute(sql1) # 执行SQL语句 db.commit() # 提交到数据库执行except: db.rollback() # 如果发生错误则回滚# 打印数据print(cursor.fetchall())# 关闭数据库连接db.close()

查
import pymysql# 打开数据库连接db = pymysql.connect(host="localhost", user="root", password="123456", database="school")# 使用cursor()方法创建一个游标对象cursorcursor = db.cursor()# SQL查询语句sql = "select * from student"try: cursor.execute(sql) # 执行SQL语句 # results = cursor.fetchone() # 逐条获取数据 results1 = cursor.fetchall() # 获取全部数据 for row in results1: name = row[3] sex = row[1] print("name=%s,sex=%s" % (name, sex))except: print("Error: unable to fetch data")# 关闭数据库连接db.close()
知识点:
-
fetchone():该方法获取下一个查询结果集。结果集是一个对象。
-
fetchall():接受全部的返回结果行。
-
rowcount:这是一个只读属性,并返回执行execute()方法后影响的行数。

分享、在看与点赞
只要你点,我们就是胖友
