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 #数据库名称 ...
随机推荐
- java面试题全集(上)--java基础
本文转载自:https://blog.csdn.net/jackfrued/article/details/44921941 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - ...
- [工作积累点滴整理]虚拟化、云计算配置规划<一>
目 录1. 服务器虚拟化的相关配置建议 11.1. 服务器的基本配置建议 11.1.1. CPU配置 11.1.2. 服务器内存配置 21.1.3. 物理网卡配置 21.1.4. 服务器磁盘配置 21 ...
- XP无法访问SharePoint 2010的问题
最近用户反馈XP系统的电脑无法访问SharePoint 2010系统,换成了火狐浏览器后可以正常访问,但是在上传附件时出现异常,支持人员给的解决方案是换操作系统,要换成win7. 但是因为工作原因,不 ...
- TinkPHP去重统计查询
当统计一个有重复的字段可以用这个方法 $count = $model->where($map)->count('distinct(id)'); 转自 http://www.thinkphp ...
- python编写脚本,删除固定用户下的所有表
脚本如下: [oracle@ycr python]$ more t_del.py #/usr/bin/python#coding:utf8 import sysimport cx_Oracle i=0 ...
- May 10th 2017 Week 19th Wednesday
Imagination is the source of creation. 想象是创作之源. Sometimes, creation and innovation are very simple, ...
- Scrum第三次冲刺
1.第三次冲刺任务概述 我们设计的长大万能通系统主要实现以下几个功能: a.周边查询 b.快递代取 c.查看校内新闻动态 d.二手物品交易 第三次冲刺我们计划实现周边查询功能.可以根据评分.距离最近. ...
- IOS VLC (第三方音频)的使用
使用注意 ● 注意点 ● 存放VLC的文件夹名不要有空格 ● 一旦执行过编译脚本sh,就别再修改存放VLC的文件夹名 编译 ● 打开最外层的工作空间 选择真机运行 编译 ● 一些简单的示例程序 集 ...
- UVA515 King
嘟嘟嘟 题目翻译:有n个数,m个限制条件.每一个限制条件形如:1.x y gt c:表示ax + ax+1 + … +ay > c.2.x y It c:表示ax + ax+1 + …… +ay ...
- Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2) C. Fountains 【树状数组维护区间最大值】
题目传送门:http://codeforces.com/contest/799/problem/C C. Fountains time limit per test 2 seconds memory ...