pythonic方式处理DataError:类型无效的输入:'dict'。先转换为字节、字符串、整数或浮点数。?

xin*_*hen 5 redis python-3.x redis-py

redis 版本 3.4.1 必须使用 hash,不能使用 str 或其他数据类型数据:

{'_anno': {
    'ctp': 'list',
    'dt': [],
    'ml': 0,
    'na': 'apple',
    'pos': -1,
    'rel': '',
    'st_var': '',
    'tp': 'object'},
'_att': {'_cuser': 'apple card',
         '_last_editor': 'apple card',
         '_protext': 'authorize',
         '_status': 'normal',
         '_theme_id': 'apple card',
         '_view': '12'},
    }

Run Code Online (Sandbox Code Playgroud)

我的代码

pool = redis.ConnectionPool(host=host, port=port)
conn = redis.StrictRedis(connection_pool=pool)

conn.hmset("aaaaaa",data)
Run Code Online (Sandbox Code Playgroud)

引发错误

数据错误:类型无效的输入:'dict'。首先转换为字节、字符串、整数或浮点数。

现在代码

pool = redis.ConnectionPool(host=host, port=port)
conn = redis.StrictRedis(connection_pool=pool)
new_data={}
for key,value in data.items():
    new_data[key]=json.dumps(value)
conn.hmset("aaaaaa",new_data)
Run Code Online (Sandbox Code Playgroud)

有没有更pythonic的方式?

小智 1

您问题的解决方案是使用hexdigest()digest()转换您的字典,您可以使用:

hashlib.sha256(mdp.encode()).hexdigest()
Run Code Online (Sandbox Code Playgroud)