python3之读取redis数据带有‘b’的问题

 更新时间:2023年09月07日 09:21:20   作者:隨意的風  
这篇文章主要介绍了python3之读取redis数据带有‘b’的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

python3读取redis数据带有‘b’的问题

#encoding=utf-8
from redis import *
#读取数据
d1=input("您输入的数据是:")
#连接
r=StrictRedis(host='localhost',port=6379)
#写
# pipe=r.pipeline()
# pipe.set('r1','hello')
# pipe.set('r2','world')
# pipe.execute()
#读
#在python3的前面,有一个'b'代表的是bytes
#用以下方式解决
#注意,有值则进行编码
#法1:
# temp=r.get('r1').decode()
# print(temp)
#法2:
# temp=r.get('r2')
# h1=str(temp,encoding='utf-8')
# print(h1)
#如果没有值,则为None
s=r.get(d1)
print(s)
if s==None:
    print('yes')
else:
    print('no')
    temp=s.decode()
    print(temp)

基本代码

from redis import *
if __name__ == '__main__':
    sr = StrictRedis(host='localhost', port=6379, db=0)
    result=sr.set('name','python')
    print(result)
    result1 = sr.get('name')
    print(result1)

运行结果:

True
b'python'

这里我们存进去的是字符串类型的数据,取出来却是字节类型的,这是由于python3的与redis交互的驱动的问题,Python2取出来的就是字符串类型的。

为了得到字符串类型的数据,你可以每次取出来decode一下,但是太繁琐了,可以这样设置:

sr = StrictRedis(host='localhost', port=6379, db=0,decode_responses=True)

即在连接数据库的时候加上decode_responses=True即可

Python如何把redis取出的数据去掉b

解决办法一

将链接转换为字符串类型,使用如下命令

temp.decode()

解决办法二

str(temp,encoding='utf-8')

解决办法三

在连接redis时进行设置,避免频繁地进行转换操作

StrictRedis(host='localhost', port=6379, db=0,decode_responses=True)

原因

Python3与redis交互驱动上存在问题,如果使用python2则不会出现这样的问题。

同样在python3打印数据中b'开头的代表的是bytes类型数据。

这个问题一定要牢记,避免在程序进行判断时出现问题而花费较多时间去排查。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python Pandas 箱线图的实现

    Python Pandas 箱线图的实现

    这篇文章主要介绍了Python Pandas 箱线图的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 跟老齐学Python之Python安装

    跟老齐学Python之Python安装

    本文主要讲诉了在Linux,Windows,MacOS三大系统中如何安装Python环境,非常的实用,虽然前面絮絮叨叨的说了不少题外话,但都是作者的肺腑之言,还是仔细看看吧
    2014-09-09
  • Python logging日志模块使用指南

    Python logging日志模块使用指南

    Python 的 logging 模块提供了标准的日志接口,可以通过它存储各种格式的日志,日志记录提供了一组便利功能,用于简单的日志记录用法,本文就给大家简单的介绍一下Python logging日志模块使用方法,需要的朋友可以参考下
    2023-08-08
  • python动态网页批量爬取

    python动态网页批量爬取

    这篇文章主要介绍了python动态网页批量爬取的方法,主要针对四六级成绩批量爬取,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Python数据结构列表

    Python数据结构列表

    这篇文章主要介绍了Python数据结构列表,本文重点内容主要是对列表数据结构的使用,在Python中,序列是一组按顺序排列的值。Python 有 3 种内置的序列类型:字符串、 元组和列表,下面一起进入文章了解更详细内容吧,需要的小伙伴可以参考一下</P><P>
    2021-12-12
  • 在python的WEB框架Flask中使用多个配置文件的解决方法

    在python的WEB框架Flask中使用多个配置文件的解决方法

    所谓配置文件管理,就是在不改变源代码的前提下,拥有两套(甚至多套)配置文件,分别用于开发环境和生产环境,通过命令行选择配置文件
    2014-04-04
  • Python调用系统底层API播放wav文件的方法

    Python调用系统底层API播放wav文件的方法

    这篇文章主要介绍了Python调用系统底层API播放wav文件的方法,涉及Python使用pywin32调用系统底层API读取与播放wav文件的相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • python numpy 矩阵堆叠实例

    python numpy 矩阵堆叠实例

    今天小编就为大家分享一篇python numpy 矩阵堆叠实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Django中如何使用celery异步发送短信验证码详解

    Django中如何使用celery异步发送短信验证码详解

    Celery是Python开发的分布式任务调度模块,这篇文章主要给大家介绍了关于Django中如何使用celery异步发送短信验证码的相关资料,主要内容包括基础介绍、工作原理、完整代码等方面,需要的朋友可以参考下
    2021-09-09
  • Python快速进修指南之向量数据库文本搜索

    Python快速进修指南之向量数据库文本搜索

    这篇文章主要为大家介绍了Java开发快速进修Python指南之向量数据库文本搜索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01

最新评论