【发布时间】:2015-09-19 16:56:36
【问题描述】:
我注意到的一些特殊情况是,在 sqlAlchemy 会话中无法识别会话之外(例如在 MySQL 的 Workbench 中进行的更改)提交给数据库的任何更改。我必须关闭并打开一个新会话,以便 sqlAlchemy 识别它。
例如,我手动删除的一行仍然是从 sqlAlchemy 中获取的。
这是我初始化会话的方式:
engine = create_engine('mysql://{}:{}@{}/{}'.format(username, password, host, schema), pool_recycle=3600)
Session = sessionmaker(bind=engine)
session = Session()
metadata = MetaData()
如何让 sqlAlchemy 识别它们?
我的 sqlAlchemy 版本是 0.9.4,我的 MySQL 版本是 5.5.34。我们只使用 sqlAlchemy 的核心(没有 ORM)。
【问题讨论】:
-
这可能不足以完全理解代码。你打电话给
session.add()(或类似的)和session.commit()吗? -
我在几个地方做我
update或insert进入数据库。否则没有。我只想了解为什么 sqlAlchemy 的会话仍会从数据库中获取已删除的行。本质上,我是否需要定期调用commit()以确保在我查询一行之前甚至每次都获取这些更改? -
用“READ_COMMITTED”试试这个docs.sqlalchemy.org/en/rel_0_9/dialects/…。
-
@pavel_form 这似乎已经解决了,非常感谢!将其添加为答案,以便我可以投票并接受它,如果你喜欢:)
标签: python mysql sqlalchemy