Start here
The safe first move
Use engine.connect() or engine.begin(), then execute on the returned Connection. Do not blindly replace engine.execute with session.execute.
Stop before automation when: Choosing connect() versus begin(). Implicit autocommit replacements.
Target shape
with engine.connect() as conn:
result = conn.execute(stmt)
with engine.begin() as conn:
conn.execute(user_table.insert(), {"name": "Ada"})