Commit graph

14 commits

Author SHA1 Message Date
Claude
d6753a9f57
upsert() now requires a value for every primary key column
A record missing a primary key value - or with None for one - can
never match an existing row, because a NULL primary key never
satisfies ON CONFLICT. Such records were previously inserted as
brand new rows (silently, for multi-record upsert_all calls) or
triggered a KeyError after the insert had already happened. Both
cases, including upserting an empty record, now raise
PrimaryKeyRequired before any SQL is executed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UnLnhsH25Nnv7LHhekUfPd
2026-07-04 18:43:37 +00:00
Simon Willison
bfd74a35bb upsert() detects existing compound primary keys
Closes #629
2026-06-24 10:43:53 -07:00
Simon Willison
8e7d018fa2
Use ON CONFLICT for upsert, refs #652
* New upsert implementation, refs #652
* supports_strict now caches on self._supports_strict

PR: https://github.com/simonw/sqlite-utils/pull/653
2025-05-08 20:37:49 -07:00
Simon Willison
d2bcdc00c6 Swapped the order of a bunch of pytest comparisons
When I wrote this I thought constant == value was a better assertion. I no longer think that.
2023-08-17 18:05:13 -07:00
Simon Willison
2376c452a5 upsert_all() now works with not_null - refs #538 2023-05-08 12:24:19 -07:00
Simon Willison
931b1e1513 .insert(hash_id_columns=) parameter, closes #343 2022-03-01 16:00:51 -08:00
Simon Willison
90e211e3e2 Now complies with flake8, refs #291 2021-06-22 18:22:08 -07:00
Simon Willison
b9629099ab Fix bug with upsert_all() and single column tables, closes #271 2021-06-12 19:57:21 -07:00
Simon Willison
635c91475a Only set last_pk on singular .insert()/.update(), refs #98 2020-04-12 20:22:49 -07:00
Simon Willison
7c28a4d133 Fix for upsert(hash_id=) bug, closes #84 2020-02-06 23:17:06 -08:00
Simon Willison
489eda92bc .upsert() and upsert_all() require pk=, closes #73 2020-01-05 09:20:11 -08:00
Simon Willison
f0f15d3dc8 Reformatted with black 2019-12-29 22:09:52 -08:00
Simon Willison
468d51314a test_upsert_compound_primary_key 2019-12-29 21:31:03 -08:00
Simon Willison
84bcabd093 New upsert implementation, refs #66 2019-12-30 05:29:23 +00:00