小编Paw*_*elP的帖子

SQLAlchemy,scoped_session - 原始 SQL INSERT 不写入数据库

我有一个 Pyramid/SQLAlchemy,MySQL python 应用程序。当我执行原始 SQL INSERT 查询时,没有任何内容写入数据库。但是,在使用 ORM 时,我可以写入数据库。我阅读了文档,阅读了有关 ZopeTransactionExtension 的内容,阅读了很多 SO 问题,但都无济于事。到目前为止没有用的:

  • transaction.commit()- 没有任何内容写入数据库。我确实意识到 ZopeTransactionExtension 需要此语句,但它在这里并没有发挥作用。
  • dbsession().commit - 不起作用,因为我使用的是 ZopeTransactionExtension
  • dbsession().close() - 什么都没写
  • dbsession().flush() - 什么都没写
  • mark_changed(session) ——

    如果 session.twophase: AttributeError: 'scoped_session' object has没有属性'双相'"

什么有效但不可接受,因为它不使用 scoped_session:

  • 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)

python mysql sqlalchemy pyramid

5
推荐指数
1
解决办法
4370
查看次数

标签 统计

mysql ×1

pyramid ×1

python ×1

sqlalchemy ×1