tornado做一个商城,进入联系卖家聊天窗时抛出异常"(raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)"

解决办法:使用  with session.no_autoflush:

示例:

抛异常代码:

me = session.query(User).filter_by(id=int(my_id)).first()
he = session.query(User).filter_by(id=int(his_id)).first()
# 获取聊天记录          
records=session.query(ChatRecord).filter(or_(and_(ChatRecord.who_send==int(my_id),ChatRecord.who_recv==int(his_id)),and_(ChatRecord.who_send==int(his_id),ChatRecord.who_recv==int(my_id)))).order_by('id').all()

将数据库操作的代码用with session.no_autoflush:包裹,不自动刷新:

with session.no_autoflush:
    me = session.query(User).filter_by(id=int(my_id)).first()
    he = session.query(User).filter_by(id=int(his_id)).first()
    # 获取聊天记录
    records = session.query(ChatRecord).filter(or_(and_(ChatRecord.who_send==int(my_id),ChatRecord.who_recv==int(his_id)),and_(ChatRecord.who_send==int(his_id),ChatRecord.who_recv==int(my_id)))).order_by('id').all()

 

更多推荐

raised as a result of Query-invoked autoflush; consider using a session.no_autof