mysql事务

关系型数据库的特性

原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。

隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。


事务操作

start transaction;  开启事务commit;   提交事务rollback;   回滚,撤销全部

(注意:要在Ubuntu上才能操作)
事务有什么作用?我举个例子吧,当你打开两个终端都进入一个mysql数据库中,当第一个终端(记为Q)进行数据插入操作,我们可以在另一个终端(记为P)把这个数据读取出来。但当Q开启事务后,P就不能读到数据,只有Q提交事务后,P方能读取到数据。而回滚有点类似于撤销,当Q开启事务后数据操作有误时可以在为提交事务前使用回滚把所有的操作全部删除。


python连接mysql

在操作之前先开启mysql服务

service mysql start

下面是开启成功的标志

接下来就是python连接mysql了:

#连接--------------------------------------------------import pymysql   #导入mysql包# 1、dbcomfig(ip 端口 用户名 密码 数据库 数据表 )
db_config = {'host':'127.0.0.1',    #ip为127.0.0.1'port':3306,   #端口3306'user':'root',     #这里是你登录mysql的用户名'password':'qwe123',  #这是登录mysql的密码'db':'python3',    #你的数据库'charset':'utf8',   #编码utf8
}# 2、建立连接
conn = pymysql.connect(**db_config)# 3、定义游标
cur = conn.cursor()#操作--------------------------------------------------# 4、接下来就是执行操作了  (具体操作看自己代码怎么写,我这里也只写了一部分操作)
try:sql = 'SELECT * FROM students'rv = cur.execute(sql)  # 执行sql语句print(cur.fetchone()) # 显示一条数据和 next() 有点像print(cur.fetchmany(2)) # 拿2条数据 注意现在从第二条开始取,第一条已经取走了resp = cur.fetchall()  # 取得所有的数据 # print(resp)  # 显示所有的
except Exception as e:print(e)conn.rollback() # 报错才回滚    finally:conn.commit() # 事务提交cur.close() # 关闭游标。conn.close() # 关闭连接 connection
获取数据:
fetchone()     取得一条数据
fetchall()     取得所有的数据
fetchmany(n)   取得n条数据
执行:
execute(···)   执行语句

python连接redis

#连接--------------------------------------------------import redis# decode_responses = True  让redis返回的数据是str类型,如果不指定则结果为bytes. ‘中文’
con = redis.StrictRedis(host='127.0.0.1',port='6379',decode_responses=True
)
print(con)#操作--------------------------------------------------# ---------------------string-----------------
# 增
con.set('country', '中国')
con.mset({'name': '张三', 'city': '福建'})
#查
a = con.get('country')
print(a)
b = con.mget('name', 'city')
print(b)
#删
con.delete('country')
a = con.get('country')
print(a)#-------------------- hash--------------------
#增
con.hmset('user', {'name': '李四', 'city': '厦门', 'age': 18, 'sex': '女'})
#改
con.hset('user', 'age', 20)
#删
con.hdel('user', 'age')
#查
a = con.hgetall('user')
print(a)
a = con.hexists('user', 'age')
print(a)# -------------------list----------------------
#增
con.rpush('list1', '中国', '日本', '韩国', '印度', '新加坡', '马拉西亚')
#改
con.lset('list1', 2, '美国')  #第二个元素修改为美国
#删
con.lpop('list1')    # 删除尾部一个数据
#查
a = con.lrange('list1', 0, -1)
print(a)# ---------------------set-----------------------
#增
con.sadd('set1', '华大', '厦大', '福大', '福师大', '集大')
#删
con.srem('set1', '华大')
#查改
a = con.smembers('set1')
print(a)# ----------------------zset-----------------------
#增
con.zadd('zset1', 1, '韩信', 2, '小乔', 3, '妲己', 4, '蔡文姬')
#删
con.zrem('zset13', '韩信')
#查
a = con.zrange('zset1', 0, -1)
print(a)# 全局命令
con.rename('zset1', 'zset2')
print(con.keys())con.expire('set2', 30)  #设置过期时间import time
time.sleep(5)    #等待5秒
print(con.ttl('zset2'))     #查看过期时间
print(con.persist('zset2'))  # 撤销过期时间

这里的操作我只是列举了一小部分,有兴趣的可以自己去尝试其他操作。

学习笔记(十九)——Python与数据库交互(mysql、redis)相关推荐

  1. Python学习笔记:使用Python操作数据库

    Python学习笔记:使用Python操作数据库 一.数据库编程接口 为了对数据库进行统一的操作,大多数语言都提供了简单的.标准化的数据库接口(API).在Python Database API 2. ...

  2. Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法

    Polyworks脚本开发学习笔记(十九)-将数据对象与参考对象对齐的方法 把开发手册理了一遍,发现还有几个点没有记录下来,其中一个就是使用点对的粗对齐和使用参考目标的精确对齐.为了把这个学习笔记凑够 ...

  3. Mr.J-- jQuery学习笔记(十九)--自定义动画实现图标特效

    之前有写过自定义动画Mr.J-- jQuery学习笔记(十八)--自定义动画 这次实现一个小demo 图标特效 页面渲染 <!DOCTYPE html> <html lang=&qu ...

  4. python 学习笔记十九 django深入学习四 cookie,session

    缓存 一个动态网站的基本权衡点就是,它是动态的. 每次用户请求一个页面,Web服务器将进行所有涵盖数据库查询到模版渲染到业务逻辑的请求,用来创建浏览者需要的页面.当程序访问量大时,耗时必然会更加明显, ...

  5. 【theano-windows】学习笔记十九——循环神经网络

    前言 前面已经介绍了RBM和CNN了,就剩最后一个RNN了,抽了一天时间简单看了一下原理,但是没细推RNN的参数更新算法BPTT,全名是Backpropagation Through Time. [注 ...

  6. ESP32学习笔记十九之BLE协议GAPGATT

    GAP GAP全名是Generic Access Profile,通用访问配置文件,它定义了蓝牙设备的角色,中心和外设,并且控制他们的连接和广播数据.广播数据有两种方式:广播数据和扫描回复数据,数据包 ...

  7. 乐优商城学习笔记十九-商品详情(二)

    2.页面静态化 2.1.简介 2.1.1.问题分析 现在,我们的页面是通过Thymeleaf模板引擎渲染后返回到客户端.在后台需要大量的数据查询,而后渲染得到HTML页面.会对数据库造成压力,并且请求 ...

  8. python学习笔记(十六)-Python多线程多进程

    一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...

  9. javascript学习笔记(十九) 节点的操作

    包括节点的创建.添加.移除.替换.复制 本节要用到的html例子 1 <ul id="myList"> 2 <li>项目一</li> 3 < ...

  10. 步步为营 .NET 设计模式学习笔记 十九、Chain of Responsibility(职责链模式)

    概述 在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显示指定,将必不可少地带来请求发送者与接受者的紧耦合. 如何使请求的发送者不需要指定具体的接受者?让请求的 ...

最新文章

  1. 将文件名和文件修改时间批量输出至Excel中
  2. python中的 怎么用_Python中如何调用Linux命令
  3. OpenCV源代码分析——SGBM
  4. PostgreSQL命令行方式登陆数据库
  5. MicroProfile社区对Jakarta EE的影响
  6. Linux从零开始(二、基础命令(续三)修改密码)
  7. 为什么磁盘存储引擎用 b+树来作为索引结构?
  8. php 常用的知识点归集(下)
  9. day02-java关键字
  10. 容器化技术之Docker入门
  11. STM32L0外接32768HZ晶振应该接多大的负载电容才合适
  12. openlayer添加自定义图片图层
  13. xp系统计算机蓝屏,12种XP系统蓝屏错误代码的含义和解决办法
  14. pygame简易超级玛丽制作
  15. linux同步webdav,基于 WebDAV 的 安卓 与 Linux 之间的写作同步
  16. [vue-router] Named Route ‘Home‘ has a default child route. When navigating to this named route....
  17. 蛙蛙推荐:一个程序员2012年技术学习总结 - 蛙蛙王子 - 博客园
  18. 深入分析 Uniswap V3 流动性供应的数学原理
  19. 众人逃离北上广后又逃回:观念不合拍还要拼爹
  20. Java搭建实战springboot基于若依项目工时统计成本核算管理源码

热门文章

  1. 概要设计 重要性_儿童户外游乐场应如何设计-户外游乐设备厂家【经验分享】...
  2. 点云网络的论文理解(二)- PointNet的pytorch复现
  3. 文巾解题 19. 删除链表的倒数第 N 个结点
  4. Python爬虫应用实战-爬取股票数据做分析
  5. 数据中台(二)数据质量分析及提升
  6. 深入Python(4):深拷贝和浅拷贝
  7. python类高级用法_十.python面向对象高级用法
  8. day20 函数闭包与装饰器
  9. 使用HMTL5 API监控前端性能
  10. 注释驱动的 Spring cache 缓存介绍--转载