Junior — Middle
How to implement a series of sequential database write operations in SQLAlchemy so that they are executed within a single transaction?
sobes.tech AI
Answer from AI
In SQLAlchemy, to perform a series of write operations within a single transaction, the context manager session.begin() is usually used. All changes within this block will be executed within one transaction, and if an exception occurs, the transaction will be rolled back.
Example:
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
try:
with session.begin():
obj1 = MyModel(data='value1')
session.add(obj1)
obj2 = MyModel(data='value2')
session.add(obj2)
# Here, the transaction is automatically committed
except Exception as e:
# On error, the transaction will be rolled back
print(f"Error: {e}")
Thus, all operations inside with session.begin(): are performed atomically.