我有一个 Pyramid/SQLAlchemy,MySQL python 应用程序。当我执行原始 SQL INSERT 查询时,没有任何内容写入数据库。但是,在使用 ORM 时,我可以写入数据库。我阅读了文档,阅读了有关 ZopeTransactionExtension 的内容,阅读了很多 SO 问题,但都无济于事。到目前为止没有用的:
transaction.commit()- 没有任何内容写入数据库。我确实意识到 ZopeTransactionExtension 需要此语句,但它在这里并没有发挥作用。dbsession().commit - 不起作用,因为我使用的是 ZopeTransactionExtensiondbsession().close() - 什么都没写dbsession().flush() - 什么都没写mark_changed(session) ——
如果 session.twophase: AttributeError: 'scoped_session' object has没有属性'双相'"
engine.execute(...)我正在寻找如何使用scoped_session(dbsession()在我的代码中)执行原始 SQL
这是我的 SQLAlchemy 设置 ( models/__init__.py)
def dbsession():
assert (_dbsession is not None)
return _dbsession
def init_engines(settings, _testing_workarounds=False):
import zope.sqlalchemy
extension = zope.sqlalchemy.ZopeTransactionExtension()
global _dbsession
_dbsession = scoped_session(
sessionmaker(
autoflush=True,
expire_on_commit=False,
extension=extension,
)
)
engine …Run Code Online (Sandbox Code Playgroud)