新手学习python(十)操作数据库redis

数据库分为两类:
1.关系型数据库: MySQL,Oracle,sql server,db2,sqlite
需要sql语句
数据存在磁盘上
2.非关系型数据库:mongodb, redis
没有表结构
没有sql语句
使用get('k'),set('xx')

说明:1.redis数据全部存在内存里面
2.redis本身性能是非常好的,每秒支持30w次的读写

import redis
r=redis.Redis(host='xx.xx.xx.xx',password='aaaaa',db=0,port=6379) #连接redis数据库,host是数据库ip
#增删改查,针对string类型
r.set('zhangsan','帅!') #数据库里面新增一个值,'zhangsan'是key,'帅'是value
#修改也是set
r.delete('shangsan') #删除
r.setex('lisi_600','哈哈哈',600) #设置key的失效时间,单位秒
r.get('lisi').decode() #获取的值是二进制,要转换成字符串
lisi=r.get('lisi')
print(lisi) #打印出来的是二进制数据

r.keys('qianwu') #获取到所有的key
r.set('天蝎座:mpp','hahaha') #key是嵌套目录
r.get('天蝎座:mpp')

---------------------------------------------
#操作哈希类型数据 hash 嵌套字典
for k in r.keys(): #删除所有的key
r.delete(k)

r.hset('stu_info','zuobian','1.8cm') #新增hash类型数据
r.hset('stu_info','zhangsan','浪')
r.type('stu_info') #查看key是什么类型
r.hget('stu_info','zhangsan').decode() #指定大key和和小key获取对应的数据

stu_info=r.hgetall('stu_info') #获取里面所有的k和v
new_stu_info={}
for k,v in stu_info.items(): #从redis获取的k,v放入字典中
new_stu_info[k.decode()]=v.decode()
print(new_stu_info)

r.hdel('stu_info','zhangsan') #删除指定key
r.delete('stu_info') #删除整个key
r.ttl('lisi_600') #获取key的失效时间
r.expire('aaa',100) #对一个key设置失效时间,哈希,string都可用

======= 小练习 =========
1.连接数据库mysql,游标类型要用pymysql.cursors.DictCour
2.查到数据库里所有数据 [ {"id":1,"passwd":"59787dd4f94034a6145275e48ad09447","username":"zhangsan","is_admin":1}]
3.循环这个list,取到username,把username当做key
4.把这个小字典转成json,存到redis里

import pymysql,json,redis

r=redis.Redis(host='yy.yy.yy.yy',password='123456',db=0,port=6379) #连接redis数据库
coon=pymysql.connect(host='xx.xx.xx.xx',user='aaa',passwd='12345678',db='aaa',charset='utf8') #连接pymysql
cur=coon.cursor(pymysql.cursors.DictCursor) #游标类型用字典类型
cur.execute('select * from my_user;') #执行查询语句
all_data=cur.fetchall() #获取所有结果
for data in all_data:
k=data.get('username') #获取用户名
r.hset('stu_info_tt',k,json.dumps(data)) #写入用户名和数据,用json类型
cur.close()
coon.close()


猜你喜欢

转载自www.cnblogs.com/bainbian1234/p/9190631.html