数据库操作之python连接mysql的四种方式、pymysql操作数据库、事务
文章目录
数据库的介绍
介绍: 数据库是存放数据的仓库,按照一定的数据结构来组织、存储和管理数据
分类: 关系型数据库和非关系型数据库
- 关系型数据库:Mysql、Oracle、SQL Server、SQLite
- 非关系数据库:Redis、MongoDB、NoSQL
-常见的数据库结构:数组,椎,栈,hash,链表,队列,树
Python连接Mysql数据库的几种方式
- MysqlDB 是python2.x连接数据库的工具,曾使用非常广泛
- 现在由于进入了python3.x时代,基本已经废弃了
-
是mysqldb的衍生版本,兼容mysqldb
-
是一个纯Python开发的工具,也兼容mysqldb
-
是一个即支持纯sql语言,也支持ORM映射的工具
PyMysql安装
安装pymysql:
下载地址:https://github.com/PyMySQL/PyMySQL
打开cmd:
输入命令:pip install pymysql
如果不能安装
输入:python3 -m pip install PyMySQL
数据库建立的连接是【tcp】连接,每一个连接都会占用内存空间,如果不关闭连接,连接数太多一会导致内存不足,二是数据库配置有个最大连接数,如果超过最大连接数,会导致别的用户无法连接数据库。所以一定要关闭游标和连接(占用内存,占用连接数)
Pymysql操作数据库的流程图:
游标
类似于指针,指针是指向数据的地址
在计算机中我们获取数据不是直接获取的,而是通过地址获取的,而指针就是指向地址的探头,通过指针我们才能访问到具体的数据。
代码实现步骤:
1.导包
2.建立数据库连接
3.获取游标对象
4.执行操作
5.关闭游标对象
6.关闭数据库连接
数据库的基本操作
数据库的基本操作包括:增删改查
对数据库进行操作之前,首先要获取到数据库的连接
连接数据库:
调用pymysql.conneect()方法创建数据库连接
coon =pymysql.connect(host=None,user=None,password="",database=None,port=0,autocommit=False)
host:数据库服务器地址(可以填id也可以填域名)
user:登录用户名
password:密码
database:要连接的数据库名称
port:数据库连接端口(默认值:3306)
autocommit:是否开启自动提交事务(默认值:False)
数据库查询操作
常用的查询方法
fetchone():获取下一个查询结果集,结果集是一个对象
fetschall():获取全部的返回结果行
rowcount:获取execute()方法执行后影响的行数
注意:跟关键字重名要加飘号
Pymysql操作数据库
建立连接
查询
新增
修改
删除
事务
并发控制的基本单元解释:
从客户端发起的接口请求,要完成的通过123456个流程,其中有一个流程出现问题,都会认为这个接口请求失败。只有全部成功,才算真正的成功。
转账流程图说明
银行之间的转账金额必须是固定值,不可减少。如果没有事务进行处理,那么一旦出现意外,会导致金钱无故消失,损伤个人和国家利益
事务的概念
介绍:事务是对一组工作顺序的操作,这组操作要么全部成功,要么全部失败。
例子:银行转行案例
事务有四个特点(ACID)
原子性:是指事务像原子一样不可分割
一致性:事务提交前后,数据的状态不会发生改变
隔离性:是指事务与事务之间不能互相干扰
持久性:提交数据后,对数据的改变是永久性的
注意:使用事务的数据库,理论上只能够通过事务来改变数据。
数据库隔离性解释案例:
读已提交案例图:
数据的机制:
自动提交:
- 建立连接时通过,autocommit的值进行设置
- 建立连接之后,通过conn.autocommit(True)进行设置
手动提交:
- 指在未开启自动提交事务之前,可以使用手动提交事务
- conn.commit() 提交事务
- conn.rollback() 回滚事务
事务提交代码演示
事务回滚代码案例演示:
#导包 import pymysql conn,cursor=None,None try: #建立连接 conn = pymysql.connect("localhost","root","root","books") #注意,如果没有设置autocommit,那么自动提交事务是关闭状态 #获取游标 cursor = conn.cursor() #执行语句 #需求:1.新增一本书,2.新增这本书的人物 #新增一本书的SQL add_hero_sql="insert into t_book(id,title,pub_date) values (5,'红楼梦',1973-01-01)" #新增一个人物的sql,构建异常:列数量和值数量不匹配 add_hero_sql = "insert into t_hero(id, `name`,`gender`,`book_id`) values(1,7,'贾宝玉',1,4);" #执行新增书和新增人物的sql语句 cursor.execute(add_book_sql) cursor.execute(add_hero_sql) #查看结果 cursor.execute("select * from t_book") print("查看添加书之后的结果:", cursor.fetchall()) cursor.execute("select * from t_hero") print("查看添加英雄人物之后的结果:",cursor.fetchall()) #如果自动提交事务没有开启,那需要手动提交事务,否则在代码中的操作,不会真正的把数据提交到数据库 #所以 我们需要手动提事务,提交方法就是conn.commit() conn.commit() except Exception as e: conn.rollback() print("已触发回滚操作!") finally: #关闭游标 if cursor: cursor.close() #关闭连接 if conn: conn.close()
- 点赞
- 收藏
- 分享
- 文章举报
- python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作
- Python3.x的mysqlclient的安装、Python操作mysql,python连接MySQL数据库,python创建数据库表,带有事务的操作,CRUD
- python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作
- Spring事务之二(JDBC连接数据库的四种方式)
- python3+ 连接并操作mysql 数据库,支持读写分离
- PHP使用数据库永久连接方式操作MySQL的是与非
- mysql事务、python连接数据库与创建表
- 深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
- 四种常见数据库的连接方式:Mysql,Oracle,SQLserver,ACCESS
- Python 3.x 连接数据库示例(pymysql 方式)
- PHP使用数据库永久连接方式操作MySQL的是与非
- 六周一次课(11月20日) 12.1 安装客户端 12.2 数据库连接 12.3 mysql事务 12.4 mysql操作数据
- Python 3.x 连接数据库(pymysql 方式)
- Python 3.x 连接数据库(pymysql 方式)
- pymysql 连接 Mysql 数据库及 简单的增删改查操作
- 关于python3连接Mysql(pymysql方式)
- python 以nosql方式连接mysql handlersocket插入操作获得变量值方法
- mac安装mysql-python和采用MVC的方式操作数据库
- jdbc 连接数据库、批量操作、事务(oracle、mysql)
- python下使用mysql.connector 安装以及连接数据库的操作