我在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