这是我的场景: 第一个 View 呈现表单,数据进入第二个 View ,我将其存储在数据库(MySQL)中并重定向到第三个 View ,显示写入数据库的内容:
Stoing to db:
DBSession.add(object)
transaction.commit()
DB Session:
DBSession = scoped_session(sessionmaker(expire_on_commit=False,
autocommit=False,
extension=ZopeTransactionExtension()))
在那之后,当我多次刷新页面时,有时我可以看到数据库发生变化,有时却看不到,一次是旧数据,第二次是新数据,依此类推... 当我重新启动服务器(本地,pserve)时,数据库数据是最新的。
也许是创建 session 的问题?
最佳答案
检查 MySQL 的 transaction isolation level .
InnoDB 的默认值是 REPEATABLE READ
:“同一事务中的所有一致读取读取由第一次读取建立的快照。”
您可以在调用 create_engine
时指定隔离级别。查看SQLAlchemy docs .
我建议您尝试使用 READ COMMITTED
隔离级别,看看是否能解决您的问题。
关于python - SQLAlchemy/Pyramid DBSession 刷新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12837527/