# sqlalchemy.exc.InvalidRequestError: A transaction is already begun on this Session

- **ID:** `python/sqlalchemy-transaction-already-begun`
- **Domain:** python
- **Category:** runtime_error
- **Verification:** ai_generated
- **Fix Rate:** 80%

## Root Cause

Calling session.begin() when a transaction is already active, often due to misuse of session context managers.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| 3.x | active | — | — |

## Workarounds

1. **** (90% success)
   ```
   with session.begin():
    session.add(obj)
# Or just use session.add and session.commit()
   ```
2. **** (95% success)
   ```
   if not session.in_transaction():
    session.begin()
   ```

## Dead Ends

- **** — May rollback unintended changes. (40% fail)
- **** — Transaction state becomes inconsistent. (80% fail)
