2014-07-20 8 views
5

Per qualche motivo memcache non sembra gradirepython-memcached: impossibile memcache un output mysql. (UnpickleableError: Non può salamoia oggetti)

result 

in questa seguente codice

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

Questo è l'errore in error_log apache:

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 

Probabilmente sta succedendo qualcosa con il "risultato".

altrimenti invece di "risultato" .. qualcosa di diverso, come ..

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

funziona bene.

risposta

2

store_result indica a MySQL di memorizzare il risultato della query localmente e restituisce un riferimento a tale "oggetto risultato". In realtà non restituisce un elenco di righe.

per ottenere effettivamente le righe:

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

Ora, sarebbe meglio per creare un'istanza di un cursore che usare _mysql direttamente.

Problemi correlati