Как отключить автоматическое заполнение таблицы транзакций при управлении версиями sqlalchemy для запуска тестов?
Я работаю с sqlalchemy-continuum, чтобы использовать управление версиями для выбранных таблиц базы данных в приложении flask с mssql. В своих сквозных тестах я запускаю контекст приложения flask, который заполняет глобальный объект g flask информацией о пользователе, которую sqlalchemy-continuum обрабатывает через свой UserPlugin. Проблема в том, что я хочу загрузить точное состояние базы данных из рукописных файлов JSON (с использованием библиотеки flask-fixtures), и для этого мне нужен полный контроль над тем, что находится в базе данных. Поскольку sqlalchemy-continuum автоматически заполняет таблицу транзакций, когда мой json содержит данные для таблиц с версиями, я не могу контролировать информацию о пользователе, хранящуюся в таблице транзакций. Я хочу иметь возможность сделать что-то подобное в процессе загрузки состояния БД из моего файла json "fixture":
# establish if a transaction table is provided in the json state (by me)
if fixture["model"] == "transaction":
special_transaction = fixture
...
# code for loading db state for all 'normal' tables then later:
if special_transaction is not None:
statement = text(
"insert into [transaction] "
"(issued_at, remote_addr, user_id) "
"values (:remote_addr, :issued_at, :user_id)"
)
session = <the code that gets my session>
for record in fixture["records"]:
session.execute(statement, record)
session.commit()
В настоящее время это не работает, потому что sqlalchemy-continuum к этому моменту уже «волшебным образом» заполнил таблицу транзакций, поэтому у меня возникают конфликты при попытке добавить в нее свои пользовательские данные. Как я могу отключить это поведение, чтобы получить полный контроль над состоянием моей базы данных во время тестового запуска?