我在Pylons 1.0框架上使用SQLAlchemy 0.6.4。我已经尝试了将autoflush和autocommit设置为True和False的所有排列,但是我发现SQLAlchemy想要包装所有SQL会话或使用BEGIN/COMMIT进行写入。我已经配置了scoped_session在模型/ meta.py如下:有没有办法让SQLAlchemy不会在BEGIN和COMMIT中包装SQL写入?
"""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()
在SELECT之后COMMIT/ROLLBACK也很重要,例如,在重复查询中:除非将隔离级别更改为READ COMMITTED或READ UNCOMMITTED,否则DB会在第一次查询时执行快照。 – 2010-12-10 15:20:27