【问题标题】:python-memcached : Unable to memcache a mysql output. ( UnpickleableError: Cannot pickle objects )python-memcached:无法对 mysql 输出进行内存缓存。 (UnpickleableError:不能腌制对象)
【发布时间】:2014-09-11 04:25:16
【问题描述】:

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

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)

工作得很好。

【问题讨论】:

    标签: python python-2.7 memcached mod-wsgi wsgi


    【解决方案1】:

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

    实际获取行数:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-08
      • 2020-04-07
      • 2023-03-23
      • 1970-01-01
      • 2016-03-27
      • 1970-01-01
      • 2019-01-21
      • 2021-01-27
      相关资源
      最近更新 更多