06 python操作MySQL和redis(进阶)
python操作mysql、redis
阶段一、mysql事务
主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!
事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
事务用来管理 insert、update、delete 语句
事务必须满足4个条件(ACID):原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。
原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。
隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
start transaction; # 开启事务
# 插入数据
insert into account value(1, 1000);
commit; # 提交事务
rollback; # 回滚
阶段二、python操作mysql
pip install pymysql
pip install redis
workon py3env
cd /etc/mysql/mysql.conf.d/
sudo vim mysqld.cnf
0.0.0.0 # 所有的ip都能访问
127.0.0.1 # 只有本地能访问
cd /etc/redis/
sudo vim redis.conf
虚拟机解释器不需要改端口,直接填 3306 6379 # 要操作数据库,首先就要建立和数据库的连接,配置pymysql.connect连接数据库:
con = pymysql.connect(
host = '主机',
port = 端口,
user = '用户名',
password = '密码',
db = '数据库名',
charset = 'utf8'
)
print(con)
# 定义游标
cursor = con.cursor()
cursor.execute('show databases') #执行sql
one = cursor.fetchone() #取出一条数据
all = cursor.fetchall() #取出所有数据
print(one)
print(all)
# 建表
tb = '''
create table tb(
id int primary key auto_increment,
name char(10))
'''
cur.execute(tb)
# 插入
row = cursor.execute("insert into test(name,sex) values(%s,%s)", ('shiwei','male'))
# 更新
row = cursor.execute(“update test set name= ‘张三' where id = %s", (2,))
# 删除
cursor.execute('delete from user where id=%s ',(1,) )
# 关闭连接
# 事务,数据改动的时候
cur.execute('commit')
con.commit() #提交事物
cursor.close() #关闭游标
con.close() # 关闭连接
## 联合查询
union = '''
select s.name, c.name,d.name from `student` s
left join `select` se on se.s_id = s.s_id
left join course c on se.c_id = c.id
left join department d on s.dept_id = d.id
ORDER BY s.name;
'''
# cursor.execute(union)
# find =cursor.fetchall()
阶段三、python操作redis
1、模块安装
pip install redis
2、基本操作
# 创建连接
re = redis.Redis(host='127.0.0.1', port='')
## 测试
re.set('num',15)
print(re.get('num'))
## set 中文
re.set('name','张三')
print(re.get('name').decode('utf8') )
### 大部分的命令 和 redis 中操作一样
不同:
re.expire('user_name', 20) # 添加过期时间
re.ttl('user_name') ### 不能看 负数 -1 -2
re.mset(a=1, b=2) ## 用键值对 mget a b
re.incr('read_count') ## incr 可以加参数,代替了 incrby get read_count
re.decr() ## decr 可以加参数,代替了 decrby
lrange list_1 0 -1
lpush list_1 2 3 4 5 3
re.lrem('list_1', 3, 0) ## num 放到后面
re.hmset() # 多插入,用字典
re.hmset('users', {'name': 'shiwei', 'age': 18})
06 python操作MySQL和redis(进阶)的更多相关文章
- Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...
- Python操作Mysql实例代码教程在线版(查询手册)_python
实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding ...
- Python操作MySQL以及数据库索引
目录 python操作MySQL 安装 使用 SQL注入问题 MySQL的索引 为什么使用索引 索引的种类 主键索引 唯一索引 普通索引 索引优缺点 不会命中索引的情况 explain 索引覆盖 My ...
- Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy
本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...
- 练习:python 操作Mysql 实现登录验证 用户权限管理
python 操作Mysql 实现登录验证 用户权限管理
- Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- Python操作Mysql之基本操作
pymysql python操作mysql依赖pymysql这个模块 下载安装 pip3 install pymysql 操作mysql python操作mysql的时候,是通过”游标”来进行操作的. ...
- python成长之路【第十三篇】:Python操作MySQL之pymysql
对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎 ...
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
随机推荐
- 上传文件到Maven仓库
1.上传jar到本地仓库 mvn install:install-file -DgroupId=org.csource -DartifactId=fastdfs-client-java -Dversi ...
- AOP的实现
AOP基于xml配置方式实现 Spring基于xml开发AOP 定义目标类(接口及实现类) /** * 目标类 */ public interface UserService { //业务方法 pub ...
- Linux中如何安装配置Mysql和SVN服务端
目标Linux系统为centOS 一.安装登陆mysql 1.直接以root用户运行:yum install mysql 和yum install mysql-server等带安装完成. 2.安装 ...
- 笨办法学Python(四十)
习题 40: 字典, 可爱的字典 接下来我要教你另外一种让你伤脑筋的容器型数据结构,因为一旦你学会这种容器,你将拥有超酷的能力.这是最有用的容器:字典(dictionary). Python 将这种数 ...
- 2.GlusterFS 安装配置
2.1 GlusterFS 安装前的准备 服务器规划:(vmware 实验) 操作系统 IP 主机名 数据盘(2 块) CentOS 6.8 x86_64 10.1.0.151 mystorage1 ...
- RAC环境修改数据库字符集
sql> alter system set cluster_database=false scope=spfile sid='qcjk1'; --------注意sid根据不同环境要修改 在 ...
- May 28th 2017 Week 22nd Sunday
Behind every beautiful thing, there's some kind of pain. 美丽背后,必有某种努力. No pains, no gains. Maybe we n ...
- xml 转义特殊字符
写了个request2XML的方法,每当数据中有'<'.'&'符号时,封装的XML就无法解析.发现了XML里的CDATA属性,问题迎刃而解!在XML文档中的所有文本都会被解析器解析. 只 ...
- hihocoder 后缀自动机四·重复旋律6
题目 对于\(k\in[1,n]\)求出长度为\(k\)的子串出现次数最多的出现了多少次 我直到现在才理解后缀自动机上的子树和是什么意思 非常显然的一点是 \[endpos(link(u))⊇endp ...
- Spring Boot 配置文件详解:Properties和YAML
一.配置文件的生效顺序,会对值进行覆盖: 1. @TestPropertySource 注解 2. 命令行参数 3. Java系统属性(System.getProperties()) 4. 操作系统环 ...