安装pymysql:
pip3 install pymysql
通过练习来了解python和mysql的交互过程
#1.连接数据库 db = pymysql.Connect( host = 'localhost', #本地的地址 user='root', #账号 passwd='********', #密码 db='srs', #数据库名称 port=3306, #端口 charset='utf8' #字符串编码 ) #2.获取游标 开辟一个缓冲区用于SQL语句的执行结果 cursor = db.cursor() #3.执行sql语句,返回受影响的记录数 sql='select * from tbstudent' cursor.execute(sql) #4.获取结果 data = cursor.fetchell() # 获取一个结果 data1=cursor.fetchone() for i in data: print('id:%s name:%s' % (i[0],i[1])) print(data) print(data1) #5.关闭连接 db.close()
数据库的事物
- 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。
- 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。
- 隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
- 持久性(Durability):一个事务一旦提交,他对数据库的修改应该永久保存在数据库中。
举例
用一个常用的“A账户向B账号汇钱”的例子来说明如何通过数据库事务保证数据的准确性和完整性。熟悉关系型数据库事务的都知道从帐号A到帐号B需要6个操作
1、从A账号中把余额读出来(500)。
2、对A账号做减法操作(500-100)。
3、把结果写回A账号中(400)。
4、从B账号中把余额读出来(500)。
5、对B账号做加法操作(500+100)。
6、把结果写回B账号中(600)。通过python给数据库表里添加,删除数据
# -*- coding:utf-8 -*- import pymysql #1连接 db = pymysql.connect( host='localhost', user='root', passwd='chenchen', db='srs', port=3306, charset='utf8') #2游标 cursor = db.cursor() #3执行 try: sql = '''insert into tbcourse values (7777,'c25语言程序设计', 3 , '大神级讲师授课需要抢座')''' cursor.execute(sql) db.commit() except: #5回滚 db.rollback() # try: # sql = '''delete from tbstudent where stuid=1001;''' # cursor.execute(sql) # db.commit() # except: # db.rollback() #data = cursor.fetchall() #print(db) #4关闭 db.close()
初识redis
- redis是一种高速高性能的内存数据库,存储的是键值对数据;
- 由于极高的存储和访问速度,redis常被用来作为数据缓存服务器;
- 另外redis是支持数据持久化的(即redis会自动将数据写入磁盘)
- redis安装 阿里云服务器 通过指令:yum install redis安装
支持的类型
- 字符串(单个value最大支持512M);
- 哈希hash(存储对象) ;
- 列表list ;
- 集合set ;
- 有序集合zset;
启动,运行
a) 启动redis-server
redis-cli
b) 启动 /bin/systemctl start redis.service
c) service start redis
进入配置文件(vim myredis.conf)
修改密码(查询 :/requireoass)大约在480行后加上密码一定要去掉(#)
修改地址 (查询 :/bind) 在60行左右 加上阿里云的私有ip地址,其他人就可以访问你
ps -aux | grep redis (查看redis的进程号)
kill + 进程号 (杀进程)
redis-server myredis.conf & (后台运行redis)
redis-cli (启动redis客户段)
自己连自己:
keys *
auth (输入密码)
ping一下自己,收到PONG的响应
访问指定IP:端口的redis服务器
redis-cli -h ip -p 端口
redis-cli -h 172.26.77.93 -p 6379
set p 1 设置 p的值为1
get p 获取 p的值
incr p 整数递增,默认值是0
decr p 整数减少
增
set mykey "test" 为键设置新值,并覆盖原有值
getset mycounter 0 设置值,取值同时进行
setex mykey 10 "hello" 设置指定 Key 的过期时间为10秒,在存活时间可以获取value
setnx mykey "hello" 若该键不存在,则为键设置新值
mset key3 "stephen" key4 "liu" 批量设置键
删
del mykey 删除已有键
改
append mykey "hello" 若该键并不存在,返回当前 Value 的长度
该键已经存在,返回追加后 Value的长度
incr mykey 值增加1,若该key不存在,创建key,初始值设为0,增加后结果为1
decrby mykey 5 值减少5
setrange mykey 20 dd 把第21和22个字节,替换为dd, 超过value长度,自动补0
查
exists mykey 判断该键是否存在,存在返回 1,否则返回0
get mykey 获取Key对应的value
strlen mykey 获取指定 Key 的字符长度
ttl mykey 查看一下指定 Key 的剩余存活时间(秒数)
getrange mykey 1 20 获取第2到第20个字节,若20超过value长度,则截取第2个和后面所有的的
mget key3 key4 批量获取键