首页 > 数据库 >Python之操作redis数据库

Python之操作redis数据库

时间:2023-04-27 13:56:05浏览次数:38  
标签:get Python res 数据库 redis decode key lrx

Python操作redis数据库步骤

1、导入redis模块

2、建立连接

3、写入命令

importredis

ip='xxx.xx.xx.xx'password='123456'r=redis.Redis(host=ip,password=password,port=6379,db=1)

res=r.get('lrx2')print(res) #结果为:b'\xe5\x97\xafohyeah234324'

#结果是二进制类型的,需要将二进制类型的转成字符串类型 res.decode()

#.decode()是二进制类型转成字符串

print(res.decode()) #结果为:嗯ohyeah234324

#字符串转成byte二进制类型

res.encode()#二进制转成字符串类型

res.decode()

三、操作命令——string类型

1、删除数据库里所有的key

使用.flushdb()方法

r.flushdb() #删除这个数据库里的所有Key

2、获取所有的key

使用.keys('key')方法

print(r.keys('session*')) #获取所有的只以session开头的key

3、新增和修改

使用.set('key','value')方法

r.set('lrx','sfdsdf1232')#新增和修改都是它

4、删除

使用.delete('key')方法

r.delete('lrx') #删除指定的key

5、获取值

使用.get('key')方法

r.get('lrx') #获取key为lrx的value值

四、操作命令——哈希(hash)类型

格式:

二层字典

session={"nhy":{'sex':'男','age':18},"nhy2":{'sex':'男','age':18},

}

优点:

管理方便,易于查找。

返回值直接就是字典,不是字符串。

1、新增和修改

使用.hset('key')方法

r.hset('lrx_stus','xiaohong','{"age":23,"addr":"上海"}')#大key 小key

 

 

2、获取指定value值

使用.hget('大key','小key')方法

res=r.hget('lrx_stu','xiaohong') #指定获取里面小key的值

3、获取所有的小key

使用.hgetall('大key')方法

res=r.hgetall('lrx_stus') #获取到大key里面所有的数据

print(res)

4、删除大key

使用.delete('大key')方法

r.delete('lrx_stus') #删除大key

5、删除小key

使用.hdel('大key','小key')方法

r.hdel('lrx_stus','xiaojun') #删除指定的小key

6、返回值由二进制类型转为字符串类型

res=r.hgetall('lrx_stus') #获取到大key里面所有的数据

print(res)

new={}#1、先循环res#2、k和v decode一下,放到new这个字典里面

for k,v inres.items():

new[k.decode()]=v.decode()print('=====下面是转完之后的')print(new)#结果为:#{b'xiaojun': b'{"age":18,"addr":"\xe5\xa4\xa9\xe9\x80\x9a\xe8\x8b\x91"}'}##=====下面是转完之后的#{'xiaojun': '{"age":18,"addr":"天通苑"}'}

在连接数据库时直接加入参数:decode_responses=True,即可直接返回字符串类型数据,就不用再decode了。

五、设置redis失效时间

importflask

server=flask.Flask(__name__)def get_redis(): #只返回连接redis的链接

return redis.Redis(**setting.redis_info)

@server.route('/login',methods=['post','get'])deflogin():

uname=flask.request.values.get('username')

pwd=flask.request.values.get('password')if uname andpwd:

sql="select * from lrx_user_table where username='%s' and password='%s';" %(uname,pwd)

sessionid=tools.my_md5(uname)

login_time=time.strftime("%Y%m%d%H%M%S")

u_id=result[0].get('id')

r=get_redis()

r.set('lrx_session:%s'%u_id,sessionid,60) #存redis的key、value、失效时间

res={"error_code":200,"sessionid":sessionid,"login_time":login_time}else:

res={"error_code":3001,"msg":"必填信息不全,请查看接口文档"}return json.dumps(res,ensure_ascii=False,indent=4)

@server.route('/pay',methods=['post'])defpay():

uid=flask.request.values.get('userid')

m= flask.request.values.get('money')

sessionid= flask.request.values.get('session')if uid and m andsessionid:

r=get_redis()

result=r.get('lrx_session:%s'%uid)if sessionid==result:

sql="select balance from lrx_account_table where u_id='%s';" %uid

bal=tools.my_mysqldb(sql)[0].get('balance')

balance=float(bal)

res={"error_code":200,"msg":"ok"}else:

res={"error_code":3003,"msg":"session已过期,请重新登录"}else:

res={"error_code":3001,"msg":"必填信息不全,请查看接口文档"}return json.dumps(res,ensure_ascii=False)

server.run(**server_info)

标签:get,Python,res,数据库,redis,decode,key,lrx
From: https://www.cnblogs.com/guanyuan12/p/17358700.html

相关文章

  • 一棵广度和深度都未知的树,存储于数据库的表中,节点存储顺序随机...
     publicclassDeleteNode{publicstaticvoidmain(String[]args){Nodenode=newNode(1,1,"aa");Nodenode1=newNode(2,3,"bb");Nodenode2=newNode(3,2,"cc");Nodenode3=ne......
  • Redis - 存储对象信息是用 Hash 还是 String
    日常工作中存储对象信息时,一般有两种做法,一种是用String存储,另一种是Hash 存储。既然两种数据结构都可以存储结构体信息。到底哪种更加合适呢?String和Hash占用内存的比较 首先用代码先插入10000条数据,然后用可视化工具来看看内存的占用情况。constRedis=require("......
  • Redis——cluster集群原理
    摘要在redis3.0之前,redis使用的哨兵架构,它借助sentinel工具来监控master节点的状态;如果master节点异常,则会做主从切换,将一台slave作为master。当master挂掉的时候,sentinel会选举出来一个master,选举的时候是没有办法去访问Redis的,会存在访问瞬断的情况;若是在电商网站大......
  • 关于数据库规范化处理
    确定关系模式及其属性:首先需要分析题目中给出的关系模式,确定其包含的属性及其依赖关系。需要注意的是,题目中可能给出的不仅是实体和属性,还可能包含关系、主码、外码等信息,需要仔细辨别。进行函数依赖分析:根据给出的依赖关系,进行函数依赖的分析,确定其范式级别。可以使用Armstr......
  • redis-5.0.5离线安装方式
    官方网址https://redis.io/github:https://github.com/antirez/redis一、安装下载redis-5.0.51、官网下载redis-5.0.5.tar.gz2、解压编译安装tar-xvfredis-5.0.5.tar.gzcdredis-5.0.5makePREFIX=/usr/local/redisinstall3、启动redis①直接启动(不推荐,会进入客户端)c......
  • Python布尔值属于数字类型吗?
    今日鸡汤列郡讴歌惜,三朝出入荣。大家好,我是皮皮。一、前言前几天在Python黄金交流群【dcpeng】问了一道Python类型的基础问题,如下图所示。二、实现过程针对这个问题,大佬们一起讨论,给出了具体的结论,Python里的布尔值是数字类型。这里【崔峰】给了一个代码,如下所示:可以看到,布尔类型......
  • 不使用内置函数的情况下,如何使用Python实现求平均值、最大值和最小值?
    今日鸡汤寂寂竟何待,朝朝空自归。大家好,我是Python进阶者。一、前言昨天在Python最强王者交流群【鱼鱼鱼也不】问了一个Pandas处理的问题,下图是讨论截图:下图是他的原始数据:其实一开始是有点难以理解的。其实这个就是想判断两列的情况,用一列值填充另一列值。二、实现过程这里【猫药......
  • 数据库SQL语句从入门到进阶
    创建表createtablepeople(idint(11),namechar(11),phonechar(20),pwdvarchar(40)); 2. 增加语句    insertintopeoplevalues(9,'gang',13023299931,'qwert');3.向特定列增加语句insertintopeople(id,name,phone)values(9,'gang',13023299931);4......
  • 软件测试选择学习java还是python?
     你好,我是小牛。当你学完软件测试基本理论,掌握业务测试流程,功能测试可以搞定,数据库和linux玩的也很溜时,接下来想进一步进阶,那么学习一门编程语言必不可少。同时,学习一门编程语言也是你成为自动化测试工程师乃至测试开发工程师的基本准入门槛。目前,编程语言五花八门,比如很多人大学......
  • python-docx对已存在的段落p1设置英文字体、中文字体、字号大小、居中对齐
    可以使用python-docx库中的样式Styles和元素Paragraph对已存在的段落进行设置。示例代码如下,可以将已存在的段落p1设置为英文字体Calibri,中文字体宋体,字号14,居中对齐:fromdocximportDocumentfromdocx.enum.textimportWD_PARAGRAPH_ALIGNMENTfro......