Откатывает ли изменения в БД контекстный менеджер?
В примере sample2 есть откат если что не так, а будет ли он в sample1?
APP = Flask(__name__)
db = SQLAlchemy(APP, engine_options={"pool_pre_ping": True})
class Users(db.Model):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(50), unique=False, nullable=True)
db.create_all()
@APP.route('/sample1', methods=['GET'])
def sample1():
with db.session() as db_session:
db_session.add(Users(name='John'))
db_session.flush()
db_session.add(Users(name='Ilon'))
db_session.commit()
@APP.route('/sample2', methods=['GET'])
def sample2():
try:
db.session.add(Users(name='John'))
db.session.flush()
db.session.add(Users(name='Ilon'))
db.session.commit()
except:
db.session.rollback()
finally:
db.session.close()