Redis-Py AttributeError:“ int”对象没有属性“ items”

时间:2019-02-07 06:59:30

标签: python redis redis-py

尝试在Python中将数据加载到Redis时遇到此错误。

这是代码:

 zkey = 'test'
 k = 15648
 nval = '15648-barry'
 redis.zadd(zkey, k, nval)

这是错误:

Traceback (most recent call last):
  File "test.py", line 131, in main
    redis.zadd(zkey, k, nval)
  File "/usr/local/lib/python3.6/dist-packages/redis/client.py", line 2320, in zadd
    for pair in iteritems(mapping):
  File "/usr/local/lib/python3.6/dist-packages/redis/_compat.py", line 122, in iteritems
    return iter(x.items())
AttributeError: 'int' object has no attribute 'items'

我在Github上发现了这个问题: https://github.com/rq/rq/issues/1014

问题已解决,解决方案应安装RQ 0.13 我跑了:

sudo pip3 install rq

成功安装。 然后重新启动redis-server。

但是我仍然遇到相同的错误。

这个问题还有解决方案吗?

规格:

Python 3.6.7
RQ 0.13
Redis-Server 4.0.9
Pip3 redis 3.1.0
Ubuntu 18.04.1 LTS

2 个答案:

答案 0 :(得分:1)

请勿安装任何新内容。
根据错误,并转到指定的文件,您将找到以下内容:

# "/usr/local/lib/python3.6/dist-packages/redis/client.py"
def zadd(self, name, mapping, nx=False, xx=False, ch=False, incr=False):

他们需要姓名和分数才能作为字典传递。
mapping是名称的字典->分数。
继续这样:

zkey = 'test'
dict = {}
dict['15648-barry'] = 15648
redis.zadd(zkey,dict)

答案 1 :(得分:1)

好的,你可以使用 pandas.Dataframe.todict()