2014-07-20 10 views
5

Z jakiegoś powodu memcache nie wydaje się podobapython-memcached: Nie można odczytać memcache z wyjścia mysql. (UnpickleableError: Nie można marynowane obiektów)

result 

W tym następujący kod

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

Jest to błąd w 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 

Coś prawdopodobnie dzieje się z "wynikiem".

inaczej zamiast "Wynik" .. coś innego, takie jak ..

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

działa dobrze.

Odpowiedz

2

store_result nakazuje MySQL przechowywać lokalnie wynik zapytania i zwraca odwołanie do tego "obiektu wyniku". W rzeczywistości nie zwraca listy wierszy.

rzeczywiście dostać wiersze:

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

Teraz byłoby najlepiej instancji kursor niż używać _mysql bezpośrednio.

Powiązane problemy