目录
知识点
游标
提交事务
检索数据
回滚
关闭
增删改查
查询
新增
修改
删除
回滚的用法
知识点
游标
在Python中,数据库游标(cursor)是用于执行SQL语句并检索数据的对象。游标允许你在数据库中移动并操作数据。在使用Python进行数据库编程时,通常首先需要创建一个游标对象。这可以通过连接对象的cursor() 方法来实现
提交事务
在执行对数据库进行更改的操作后,需要调用连接对象的 commit() 方法来提交这些更改,它会生成一个connect对象,同时函数的参数也是固定好的,以确保它们被永久保存在数据库中
检索数据
执行SQL查询后,可以使用游标的 fetchall() ,fetchone() ,fetchmany() 方法检索查询结果
fetchall() | 用于从数据库游标中获取所有的查询结果行,并将其作为一个列表返回;通常用于对结果集不大的查询或者在确定结果集不会占用太多内存的情况下使用 |
fetchone() | 用于从数据库游标中获取下一行的查询结果;每次调用 fetchone() ,游标会移动到结果集中的下一行,并返回该行的数据。如果到达结果集的末尾,fetchone() 将返回 None |
fetchmany(size) | 用于从数据库游标中获取指定数量(size )的查询结果行,并将其作为一个列表返回;可以通过指定 size 参数来控制每次获取的行数,默认为游标的数组大小(arraysize) |
回滚
在数据库操作中,"回滚"(Rollback)是指取消或撤销之前执行的一系列数据库操作,将数据库恢复到之前的状态。在 Python 中进行数据库查询的回滚通常涉及使用事务(Transaction)来管理数据库操作
关闭
关闭操作进行后,无法再进行操作,除非再次连接
# 关闭游标
cursor.close()# 关闭连接
conn.close()
这些是在Python中使用游标进行数据库操作时的基本操作。游标允许你执行SQL语句、处理结果集,并确保在完成操作后正确提交事务和关闭连接
增删改查
首先我们要导入mysql相关的包,如果下面有红色下划线的话,需要我们进行安装,我这里是利用的PyCharm,点击Alt+Enter键,选择安装Mysql-connector-python模块
也可以通过pip install mysql-connector-python进行安装
mysql.connector.connect()
这是 MySQL 官方提供的用于建立数据库连接的函数。它接受一系列参数,包括数据库主机名(host)、用户名(user)、密码(password)、以及要连接的数据库(database)名称
之后我们就可以利用上面学习的内容,进行对数据库的增删改查
查询
import mysql.connectorconn = mysql.connector.connect(host='localhost',user='root',password='123456',database='zzz'
)# 创建一个游标
cursor = conn.cursor()cursor.execute('select * from users')
rows = cursor.fetchall()
for row in rows:print(row)cursor.close()
conn.close()
事先在zzz数据库里面添加了一条数据,之后利用sql语句进行查询,可以看到查询成功了
新增
import mysql.connectorconn = mysql.connector.connect(host='localhost',user='root',password='123456',database='zzz'
)cursor = conn.cursor()# 插入语句
cursor.execute('insert into users(name,age,email) values(%s,%s,%s)', ("橙子味热果汁", 20, "12345678910"))# 提交数据的更改
conn.commit()cursor.close()
conn.close()
可以看到我们用sql语句新增了一条id为2的数据
修改
import mysql.connectorconn = mysql.connector.connect(host='localhost',user='root',password='123456',database='zzz'
)cursor = conn.cursor()# 更改数据
cursor.execute("update users set age = 18 where id = 1")conn.commit()cursor.close()
conn.close()
可以看到,我们id为 1 的 age 中的数据由原来的20修改为了18
删除
import mysql.connectorconn = mysql.connector.connect(host='localhost',user='root',password='123456',database='zzz'
)cursor = conn.cursor()cursor.execute("delete from users where id = 2")conn.commit()cursor.close()
conn.close()
可以看到刚才我们新建id为2的数据被删除掉了
回滚的用法
import mysql.connectortry:# 连接到 MySQL 数据库conn = mysql.connector.connect(host='localhost',user='root',password='123456',database='zzz')# 创建一个游标对象cursor = conn.cursor()# 开始事务conn.start_transaction()# 执行一系列数据库操作cursor.execute("INSERT INTO users (name, age, email) VALUES ('John', 30, '666')")cursor.execute("UPDATE users SET age = 31 WHERE name = 'John'")# 模拟发生错误,例如除零错误# 由于错误发生在事务中,因此可以回滚事务并撤销之前的操作1 / 0# 提交事务(如果没有发生错误)conn.commit()except Exception as e:print("An error occurred:", e)# 回滚事务以撤销之前的操作conn.rollback()finally:# 关闭游标和连接cursor.close()conn.close()