1

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しかし、これは template( );の次のエラーで発生します。

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

私は何を間違っていますか?

4

1 に答える 1

2

キャッシュからオブジェクトを取得するときは、それらをセッション オブジェクトに関連付ける必要があります。

obj_from_cache = get_from_cache(key)
session.merge(obj_from_cache)
于 2011-06-02T12:04:48.507 に答える