我在Pylons 1.0框架上使用SQLAlchemy 0.6.4。我已经尝试了将autoflush和autocommit设置为True和False的每个排列,但我发现SQLAlchemy想要用BEGIN / COMMIT包装所有SQL会话或写入。我在models / meta.py中配置了scoped_session,如下所示:
"""SQLAlchemy Metadata and Session object"""
from sqlalchemy import MetaData
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker
__all__ = ['Base', 'Session']
# SQLAlchemy session manager. Updated by model.init_model()
Session = scoped_session(sessionmaker(autoflush=False, autocommit=True))
# The declarative Base
Base = declarative_base()
metadata = MetaData()
答案 0 :(得分:2)
如果您的问题是这种行为的缓慢,解决方案可能是在您的应用程序中以明确的方式开始/结束事务。
答案 1 :(得分:1)
看起来不像:
虽然许多DBAPI实现了一个名为autocommit的标志,但当前的SQLAlchemy行为使得它实现了自己的自动提交。这是通过检测表示数据更改操作的语句(即INSERT,UPDATE,DELETE等),然后在没有事务正在进行时自动发出COMMIT来实现的。