-1

助けが必要です。数日前、私は自分の Web プロジェクトをサーバーにデプロイしました。すべてうまくいきました。 Msyql の "wait_timeout=2880000" および "interactive_timeout = 2880000" の conf が原因であることがわかりました。また、"set pool_recycle=7200 when create_engine" などの解決策も得られましたが、機能しません。ある人は、「if を使用した後に session.close() を実行する必要がある」と言っています。試してみようとしましたが、別のエラーが発生しました。sqlalchemy.orm.relation を使用しました。クラス User と Role.今、私は DBSession.close() のように追加します

  @classmethod
  def get_by_id(cls, id):
    user_ = DBSession.query(cls).get(id)
    DBSession.close()
    return user_

しかし、今私がこれをしたとき

user = User.get_by_id(1)
user.roles

ERROR:Parent instance <User at 0xace51cc> is not bound to a Session;
lazy load operation of attribute 'roles' cannot proceed

どうすれば私の問題を解決できますか。

4

1 に答える 1

1

ユーザー インスタンスを開いているセッションに追加します。

# assuming databaseSession is a valid session object using a valid engine
engine = create_engine('mysql://user@localhost:3600/database')
Session = sqlalchemy.orm.sessionmaker()
Session.configure(bind=engine) 
databaseSession = Session()
databaseSession.add(user)

user.roles

後でセッションを閉じます。

databaseSession.close()
于 2013-08-19T04:52:58.053 に答える