2014-07-20 16 views
5

Aus irgendeinem Grund memcache nichtpython-memcached: Konnte keine mysql-Ausgabe memcachen. (UnpickleableError: Kann nicht Objekte Pickles)

result 

in diesen folgenden Code

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

Dies ist der Fehler in Apache error_log zu mögen scheint:

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 

Irgendetwas geht wahrscheinlich mit dem "Ergebnis".

sonst statt "Ergebnis" .. etwas anderes wie ..

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

funktioniert gut.

Antwort

2

store_result weist MySQL an, das Ergebnis Ihrer Abfrage lokal zu speichern, und gibt einen Verweis auf dieses "Ergebnisobjekt" zurück. Es gibt tatsächlich keine Liste von Zeilen zurück.

Um tatsächlich die Zeilen:

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

Nun, wäre es am besten sein, um einen Cursor zu instanziieren als _mysql direkt zu verwenden.