python3之讀取redis數(shù)據(jù)帶有‘b’的問題
python3讀取redis數(shù)據(jù)帶有‘b’的問題
#encoding=utf-8
from redis import *
#讀取數(shù)據(jù)
d1=input("您輸入的數(shù)據(jù)是:")
#連接
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'
這里我們存進去的是字符串類型的數(shù)據(jù),取出來卻是字節(jié)類型的,這是由于python3的與redis交互的驅動的問題,Python2取出來的就是字符串類型的。
為了得到字符串類型的數(shù)據(jù),你可以每次取出來decode一下,但是太繁瑣了,可以這樣設置:
sr = StrictRedis(host='localhost', port=6379, db=0,decode_responses=True)
即在連接數(shù)據(jù)庫的時候加上decode_responses=True即可
Python如何把redis取出的數(shù)據(jù)去掉b
解決辦法一
將鏈接轉換為字符串類型,使用如下命令
temp.decode()
解決辦法二
str(temp,encoding='utf-8')
解決辦法三
在連接redis時進行設置,避免頻繁地進行轉換操作
StrictRedis(host='localhost', port=6379, db=0,decode_responses=True)
原因
Python3與redis交互驅動上存在問題,如果使用python2則不會出現(xiàn)這樣的問題。
同樣在python3打印數(shù)據(jù)中b'開頭的代表的是bytes類型數(shù)據(jù)。
這個問題一定要牢記,避免在程序進行判斷時出現(xiàn)問題而花費較多時間去排查。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
python?flask框架中多種查詢參數(shù)的獲取方式
這篇文章主要介紹了pythonflask框架的生命周期以及多種查詢參數(shù)的獲取方式,文章通過代碼示例和圖文講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-03-03
Python實現(xiàn)PyPDF2處理PDF文件的方法示例
這篇文章主要介紹了Python實現(xiàn)PyPDF2處理PDF文件的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09
PyQt5實現(xiàn)讓QScrollArea支持鼠標拖動的操作方法
今天小編就為大家分享一篇PyQt5實現(xiàn)讓QScrollArea支持鼠標拖動的操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06

