2011-02-17 76 views
1

我试图使用烧杯缓存与SQLAlchemy,但我一直在收到错误。使用烧杯缓存和SQLAlchemy

这是我的表格定义。

class Post(Base): 
    .... 
    .... 

    user = relation(User, primaryjoin = User.id == id) 
    tags = relation('Tags', backref = 'posts') 


class Tags(Base): 
    ... 
    ... 

    user = relation(User, primaryjoin = User.id == id) 
    post = relation(Post, primaryjoin = Post.id == id) 

烧杯缓存与其他SQLAlchemy类一起工作,除了这些类。

当我运行该程序时,我收到以下错误;

DetachedInstanceError: Parent instance <Post at 0x101f90b10> is not bound to a Session; lazy load operation of attribute 'user' cannot proceed. 

我搜索StackOverflow上,并在另一个线程,我需要禁用延迟加载所以我改了行已经找到

user = relation(User, primaryjoin = User.id == id) 

user = relation(User, primaryjoin = User.id == id, lazy='dynamic') 

但这在模板中出现以下错误(post.user.fullname);

AttributeError: 'AppenderQuery' object has no attribute 'fullname' 

我在做什么错?

回答

2

当您从缓存中抓取对象时,应该将它们与会话对象相关联,例如。

obj_from_cache = get_from_cache(key) 
session.merge(obj_from_cache)