2014-07-20 14 views
5

出於某種原因,內存緩存似乎並不喜歡python-memcached:無法memcache一個mysql輸出。 (UnpickleableError:不能鹹菜對象)

result 
在此

下面的代碼

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

這是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 

「結果」可能正在發生。

的,否則不是 「結果」 ..別的東西如..

m.set('1','test',60) 

的作品就好了。

回答

2

store_result指示MySQL在本地存儲查詢結果,並返回對該「結果對象」的引用。它實際上並不返回行列表。

真正得到行:

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

現在,它會是最好的實例化一個光標,而不是直接使用_mysql