This release changes the behaviour of
upsert. It’s a breaking change, hence 2.0.
upsert command-line utility and the
.upsert_all() Python API methods have had their behaviour altered. They used to completely replace the affected records: now, they update the specified values on existing records but leave other columns unaffected.
If you want the old behaviour - where records were completely replaced - you can use
$ sqlite-utils insert ... --replace on the command-line and
.insert(..., replace=True) and
.insert_all(..., replace=True) in the Python API. See Insert-replacing data using the Python API and Insert-replacing data using the CLI for more.
For full background on this change, see issue #66.