Я посмотрел везде, и я не могу понять, что происходит не так.
Я хочу иметь возможность ставить в очередь несколько запросов к базе данных и иметь возможность откатить их, если какой-либо запрос завершится ошибкой. Я не смог заставить это работать, поэтому попытался свести проблему к простому примеру (запустил транзакцию, выполнил два запроса, попытался откатиться), но даже это не работает.
Этот код должен; начать транзакцию, попытаться создать две таблицы, а затем выполнить откат, чтобы в базе данных не появилось никаких изменений.
Вызов rollback() возвращает true, поэтому он говорит, что работает, но когда я смотрю в базу данных, таблицы все равно были созданы.
Вот мой код:
db = QSqlDatabase.database()
db.transaction()
q = QSqlQuery(db)
q.exec_("create table a ...") #omitted but I have checked they are fully valid queries
q.exec_("create table b ...")
db.rollback()