HomePostsProjects

Bulk insert / update / upsert in SQLAlchemy

August 10, 2024

Upsert (dialects):

  • https://docs.sqlalchemy.org/en/20/orm/queryguide/dml.html#orm-queryguide-upsert
    • SQLAlchemy does not yet have a backend-agnostic upsert construct

Upsert (dialects):

  • sqlite - https://docs.sqlalchemy.org/en/20/dialects/sqlite.html#sqlite-on-conflict-insert
  • postgres - https://docs.sqlalchemy.org/en/20/dialects/postgresql.html#postgresql-insert-on-conflict
  • mysql - https://docs.sqlalchemy.org/en/20/dialects/mysql.html#mysql-insert-on-duplicate-key-update
    • https://stackoverflow.com/questions/59291434/python-sqlalchemy-on-duplicate-key-update-with-multiple-records
    • https://github.com/sqlalchemy/sqlalchemy/discussions/9328

Update:

  • https://docs.sqlalchemy.org/en/21/tutorial/data_update.html#tutorial-core-update-delete

Insert:

  • performance profiling
    • https://docs.sqlalchemy.org/en/20/_modules/examples/performance/bulk_inserts.html

© 2025 Luke Miloszewski

Email AddressGitHubTwitter