我想在我的烧瓶应用程序中收到redis的解码响应。
例如,当我使用redis.hget
时,我会收到
{
b'a': b'1',
b'b': b'2',
b'c': b'3',
}
这对我的用例并不是很理想,因为它要求我使用像my_hash[b'a']
这样的has列表。
我宁愿收到这样的回复:
{
'a': '1',
'b': '2',
'c': '3',
}
是否有一种简单的方法让python-redis解码来自数据存储的所有响应?
答案 0 :(得分:3)
只需创建一个小型自定义提供程序,在使用decode_responses
函数配置数据存储时设置from_url
参数。
class DecodedRedis(StrictRedis):
@classmethod
def from_url(cls, url, db=None, **kwargs):
kwargs['decode_responses'] = True
return StrictRedis.from_url(url, db, **kwargs)
redis = FlaskRedis.from_custom_provider(DecodedRedis, app)
答案 1 :(得分:1)
您可以使用decode_responses=True
来获取str而不是字节
这是我的代码使用工厂模式
from flask_redis import FlaskRedis
redis_store = FlaskRedis(decode_responses=True)
def create_app():
redis_store.init_app(app)
您可能会喜欢
>>> from app import redis_store
>>> redis_store.keys()
['test']
>>> redis_store.hgetall("test")
{'a': '1'}