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(进阶)的更多相关文章

  1. Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy   Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...

  2. Python操作Mysql实例代码教程在线版(查询手册)_python

    实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding ...

  3. Python操作MySQL以及数据库索引

    目录 python操作MySQL 安装 使用 SQL注入问题 MySQL的索引 为什么使用索引 索引的种类 主键索引 唯一索引 普通索引 索引优缺点 不会命中索引的情况 explain 索引覆盖 My ...

  4. Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

  5. 练习:python 操作Mysql 实现登录验证 用户权限管理

    python 操作Mysql 实现登录验证 用户权限管理

  6. Python操作MySQL

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  7. Python操作Mysql之基本操作

    pymysql python操作mysql依赖pymysql这个模块 下载安装 pip3 install pymysql 操作mysql python操作mysql的时候,是通过”游标”来进行操作的. ...

  8. python成长之路【第十三篇】:Python操作MySQL之pymysql

    对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎 ...

  9. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

随机推荐

  1. JSTL核心库

    1 out和set(重点) out <c:out value=”aaa”/> 输出aaa字符串常量 <c:out value=”${aaa}”/> 与${aaa}相同 < ...

  2. Winform中 DataGridView控件中的 CheckBox 的值读出来 始终 为 False ,已解决

    private void DGV_DetailsViewer_CellContentClick(object sender, DataGridViewCellEventArgs e) { )) { D ...

  3. 一.配置简单的嵌入式tomcat和jetty

    我们写了一个web应用,打成war包后,就需要找一个server来部署.对于我们的实际应用,我们基本没必要自己再写一个嵌入式的server.接下来两篇文章只是以钻研的心态来学习一下嵌入式tomcat和 ...

  4. dedecms 权重排序问题

    isweight='y' orderway='asc'  orderby='weight'  依次进入根目录>dede 找到打开文件 album_edit.php   //找到更新数据库的SQL ...

  5. delphi7 打开project/options 出错

    出错提示:Access violation at address 0012F88F. Write of address 0012F88F.然后又提示一条:Access violation at add ...

  6. C++ double 小数精度控制

    第一种方法:cout<<fixed<<setprecision(20)<<mydouble<<endl; #include <iostream&g ...

  7. iTunes备份路径,iTunes默认备份路径,iTunes修改备份路径

    1:当前iTunes版本: 2:帮助给出的答复: 3:修改的操作界面: 实际文件夹路径:

  8. fiddler和charles

    (4)学习浏览器代理和手机网络抓包,涉及到了fiddler和charles,

  9. SQLServer用存储过程实现插入更新数据

    实现 1)有同样的数据,直接返回(返回值:0): 2)有主键同样,可是数据不同的数据,进行更新处理(返回值:2): 3)没有数据,进行插入数据处理(返回值:1). [创建存储过程] Create pr ...

  10. 创建一个dynamics 365 CRM online plugin (十二) - Asynchronous Plugins

    这篇是plugin的终结. 通过之前的11期我们应该发现了plugin其实学习起来不难. async plugin 是把plugin的功能async run起来. e.g.  我们之前做过的preOp ...