Python 如何将sqlalchemy记录对象存储到memcache中
代码: 我正在尝试将sqlalchemy记录对象存储到memcache中Python 如何将sqlalchemy记录对象存储到memcache中,python,serialization,sqlalchemy,memcached,Python,Serialization,Sqlalchemy,Memcached,代码: 我正在尝试将sqlalchemy记录对象存储到memcache中 from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker DBSession = sessionmaker() DBSession.bind = engine session = DBSession() engine
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
DBSession = sessionmaker()
DBSession.bind = engine
session = DBSession()
engine = create_engine('mysql://root:password@localhost/db', echo=True)
Base = declarative_base(engine)
class Accounts(Base):
__tablename__ = 'accounts'
__table_args__ = {'autoload': True}
它正在存储字符串对象而不是用户对象输出:
'
有什么帮助吗
感谢advance问题不在于如何存储
SQLAlchemy
对象,而在于如何存储任何对象实例
这是从您导入的pymemcache客户端
类的
值必须具有str()方法才能将其自身转换为字节
绳子
您还没有包含查询数据库时使用的
Users
类的定义,因此我只能假设您没有重写\uuuu str
。因此,当pymemcache
试图将对象转换为字节字符串时,它调用python的默认\uuu str\uuu
实现并存储该实现。正如@SuperShoot在其回答中提到的那样,pymemcache
希望存储str
表示。由于SQLAlchemy模型实例(记录)在本机上不是str
表示形式,pymemcache
尝试调用其默认的\uuu str\uuu()
方法,从而产生不希望的结果
您需要的是一个临时步骤,将SQLAlchemy模型实例序列化为一个结构或另一个结构的str
。这使您的逻辑循环可折叠流动:
str
pymemcache
存储序列化的str
pymemcache
检索str
时,将其反序列化到SQLAlchemy模型实例中,以便在Python代码中继续轻松使用它希望这有帮助 你能发布更多的代码吗,特别是你从memcache中检索和打印用户对象的部分?你现在能检查一下吗?仍然看不到你在哪里打印用户对象。
from pymemcache.client.base import Client
client = Client(('localhost', 11211))
client.set('testkey', session.query(Users).get(1))