Есть ли способ заставить SQLAlchemy НЕ оборачивать записи SQL внутри BEGIN и COMMIT? - PullRequest
2 голосов
/ 09 декабря 2010

Я использую SQLAlchemy 0.6.4 на платформе Pylons 1.0. Я пробовал каждую перестановку установки autoflush и autocommit в True и False, но я обнаружил, что SQLAlchemy хочет обернуть все сеансы SQL или записать их с помощью BEGIN / COMMIT. Я настроил scoped_session в models / meta.py, как показано ниже:

"""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()

Ответы [ 2 ]

2 голосов
/ 09 декабря 2010

Если ваша проблема заключается в медлительности этого поведения, решение может состоять в том, чтобы каким-то разумным способом начать / завершить транзакции в вашем приложении.

1 голос
/ 09 декабря 2010

Не похоже на это:

В то время как многие DBAPI реализуют флаг, называемый autocommit, текущее поведение SQLAlchemy таково, что он реализует свой собственный autocommit. Это достигается путем обнаружения операторов, представляющих операции по изменению данных, то есть INSERT, UPDATE, DELETE и т. Д., И последующей автоматической отправки COMMIT, если транзакция не выполняется.

...