# sqlalchemy.exc.IntegrityError: (psycopg2.errors.UniqueViolation) duplicate key value violates unique constraint

**Code:** `SQLAlchemy IntegrityError` · **Category:** Python · **Seen on:** Python

A database constraint (unique, foreign key, not null) rejected an insert/update made through SQLAlchemy.

## Meaning

The parenthesised driver error names the constraint. After an IntegrityError the session must be rolled back before it can be used again.

## Common causes

- Duplicate unique value
- Foreign key pointing to a missing row
- NULL in a NOT NULL column
- Session not rolled back after a previous failure

## Quick fix

1. Catch IntegrityError, session.rollback(), and report “already exists”
2. Validate references before inserting
3. Use upserts (insert().on_conflict_do_update())

## Detailed fix by platform

### Python

1. 

```python
try:
    db.session.commit()
except IntegrityError:
    db.session.rollback()
    raise
```


## How to diagnose

1. **Constraint** — Which one is named?
2. **Session** — Rolled back after errors?

---
Source: [WhatIsMyError](https://whatismyerror.com/errors/python/sqlalchemy-integrityerror)
