【问题标题】:pythonic way deal with DataError: Invalid input of type: 'dict'. Convert to a bytes, string, int or float first.?pythonic方式处理DataError:类型无效输入:'dict'。先转换为字节、字符串、整数或浮点数。?
【发布时间】:2020-06-10 02:10:10
【问题描述】:

redis 版本 3.4.1 必须使用哈希,不能使用 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'},
    }

我的代码

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

conn.hmset("aaaaaa",data)

引发错误

DataError:类型无效的输入:'dict'。转换为字节、字符串、 首先是 int 或 float。

现在代码

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)

有没有更pythonic的方式?

【问题讨论】:

标签: python-3.x redis redis-py


【解决方案1】:

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

hashlib.sha256(mdp.encode()).hexdigest()

【讨论】:

    猜你喜欢
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    相关资源
    最近更新 更多