python data_error ai_generated true

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

ID: python/sqlalchemy-integrity-error-duplicate

Also available as: JSON · Markdown · 中文
80%Fix Rate
85%Confidence
0Evidence
2024-05-12First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
3.x active

Root Cause

Inserting a record with a duplicate value in a unique column.

generic

中文

在唯一列中插入重复值。

Workarounds

  1. 95% success Check for existing record before insert.
    existing = session.query(User).filter_by(email='[email protected]').first()
    if not existing:
        session.add(User(email='[email protected]'))
    session.commit()
  2. 90% success Use ON CONFLICT DO NOTHING via SQLAlchemy dialect.
    from sqlalchemy.dialects.postgresql import insert
    stmt = insert(User).values(email='[email protected]').on_conflict_do_nothing()
    session.execute(stmt)
    session.commit()

Dead Ends

Common approaches that don't work:

  1. Catching exception and ignoring without rollback. 90% fail

    Transaction remains in aborted state; subsequent queries fail.

  2. Using session.merge() without checking for conflicts. 60% fail

    Merge may still raise IntegrityError if primary key conflicts.