python - SQLAlchemy/Pyramid DBSession 刷新问题

标签 python mysql sqlalchemy pyramid

这是我的场景: 第一个 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/

相关文章:

python - 访问格式类似于字典 Python 的列表中的信息

python - virtualenv 不能在 Windows cygwin 上运行

mysql - IN 对于许多元素

mysql - 当应该显示多行时,具有嵌套选择的 SQL 仅返回一行

python - SQLAlchemy 与连接 (python)

python - 从 IntegrityError 异常中获取 key

python - 如何在 Google 应用引擎上使用 session

python - 识别 pandas 系列中多个连续值为负数的周期

php - 仅第二页的 Jeasyui Datagrid 分页问题

python - 尽管从相同的requirements.txt安装依赖项,相同的代码在venv中不起作用