def test_ddl_transaction_create_only(ddl_transaction): db = sqlite3.connect(':memory:') assert len(list(db.execute("PRAGMA table_info(t);"))) == 0 with pytest.raises(ZeroDivisionError): with ddl_transaction(db): db.execute("create table t (a, b);") 1 / 0 assert len(list(db.execute("PRAGMA table_info(t);"))) == 0
def test_ddl_transaction_create_and_insert(ddl_transaction): db = sqlite3.connect(':memory:') with db: db.execute("create table t (a, b);") db.execute("insert into t values (1, 2);") assert list(db.execute("select * from t order by a;")) == [(1, 2)] with pytest.raises(ZeroDivisionError): with ddl_transaction(db): db.execute("insert into t values (3, 4);") db.execute("alter table t add column c;") 1 / 0 assert list(db.execute("select * from t order by a;")) == [(1, 2)]