4

それで、私はPythonで動作するredisを持っています-エキサイティングです!

タプルを保存して取得し、後で解析する必要があります。以下のコンストラクトは機能していません。返されたタプルが引用符で囲まれているためだと思います。その両端に引用符があります。

引用符は、実際にはタプルではなく文字列であることを示しているように思えます。

では、実際に作業中のタプルを返すように redis を取得する方法を知っている人はいますか? ありがとう!

>>> tup1 = ('2011-04-05', 25.2390232323, 0.32093240923490, 25.239502352390)
>>> r.lpush('9999', tup1)
1L
>>> r.lpop('9999')
"('2011-04-05', 25.2390232323, 0.3209324092349, 25.23950235239)"
>>> v = r.lpop('9999')
>>> test=v[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object has no attribute '__getitem__'
4

3 に答える 3

12

タプルをそのまま戻したい場合は、「pickle」を使用することをお勧めします。

>>> tup1 = ('2011-04-05', 25.2390232323, 0.32093240923490, 25.239502352390)
>>> import pickle
>>> r.lpush('9999', pickle.dumps(tup1))
1L
>>> v = pickle.loads(r.lpop('9999'))
>>> v
('2011-04-05', 25.2390232323, 0.3209324092349, 25.23950235239)
>>> type(v)
<type 'tuple'>
>>> 
于 2014-01-21T04:26:05.677 に答える
0

既にpopped要素がvあり、取得しようとしている要素はもう存在しません。

これを試して:

>>> tup1 = ('2011-04-05', 25.2390232323, 0.32093240923490, 25.239502352390)
>>> r.lpush('9999', tup1)
>>> v = r.lpop('9999')
>>> test = eval(v)[0]

eval戻り値の型は文字列なので、型を評価する必要があります

于 2013-05-21T01:22:06.907 に答える