python-memcached:无法记忆mysql输出.(UnpickleableError:无法腌制对象)

5 python memcached mod-wsgi wsgi python-2.7

出于某种原因,memcache似乎并不喜欢

result
Run Code Online (Sandbox Code Playgroud)

在以下代码中

db.query("select * from TABLE order by ID desc limit 70")
result = db.store_result()
m.set('1',result,60)
Run Code Online (Sandbox Code Playgroud)

这是apache error_log中的错误:

m.set('1',result,60)
File "/usr/lib/python2.6/site-packages/memcache.py", line 466, in set
return self._set("set", key, val, time, min_compress_len)
File "/usr/lib/python2.6/site-packages/memcache.py", line 639, in _set
store_info = self._val_to_store_info(val, min_compress_len)
File "/usr/lib/python2.6/site-packages/memcache.py", line 615, in _val_to_store_info
pickler.dump(val)
UnpickleableError: Cannot pickle objects
Run Code Online (Sandbox Code Playgroud)

"结果"可能会发生一些事情.

否则不是"结果"..其他如...

 m.set('1','test',60)
Run Code Online (Sandbox Code Playgroud)

工作得很好.

Tho*_*zco 2

store_result指示 MySQL 在本地存储查询结果,并返回对该“结果对象”的引用。它实际上并不返回行列表。

要实际获取行:

rows = result.fetch_row(maxrows=0)  # Actually fetches all the rows
m.set('1', rows, 60)
Run Code Online (Sandbox Code Playgroud)

现在,最好实例化游标而不是_mysql直接使用。