How to do an upsert with SqlAlchemy?

SQLAlchemy does have a “save-or-update” behavior, which in recent versions has been built into session.add, but previously was the separate session.saveorupdate call. This is not an “upsert” but it may be good enough for your needs. It is good that you are asking about a class with multiple unique keys; I believe this is precisely … Read more

SQLite UPSERT / UPDATE OR INSERT

Q&A Style Well, after researching and fighting with the problem for hours, I found out that there are two ways to accomplish this, depending on the structure of your table and if you have foreign keys restrictions activated to maintain integrity. I’d like to share this in a clean format to save some time to … Read more

PostgreSQL INSERT ON CONFLICT UPDATE (upsert) use all excluded values

Postgres hasn’t implemented an equivalent to INSERT OR REPLACE. From the ON CONFLICT docs (emphasis mine): It can be either DO NOTHING, or a DO UPDATE clause specifying the exact details of the UPDATE action to be performed in case of a conflict. Though it doesn’t give you shorthand for replacement, ON CONFLICT DO UPDATE … Read more