Simon Willison
52ea7d21f4
Fix for mypy errors
2025-11-23 15:53:19 -08:00
Simon Willison
96fab69256
Removed convert skip_false and --skip-false, closes #542
2025-11-23 15:40:28 -08:00
Simon Willison
fafa966300
Table.create() now stores configuration in _defaults
...
When configuration parameters like pk, foreign_keys, not_null, etc.
are passed to Table.create(), they are now stored in self._defaults
so that subsequent operations on the same Table instance (like insert,
upsert) will use those settings automatically.
Previously, calling db["table"].insert({...}, pk="id") would create
the table correctly but subsequent calls to insert() or upsert() on
the same table object would not know about the pk setting, causing
issues like upsert() failing with "requires a pk" error.
Closes #655
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-23 15:18:55 -08:00
Simon Willison
7ffd5052e9
table.insert_all() and table.upsert_all() now take generators of lists/tuples
...
Closes #672 , PR #673
2025-11-23 12:17:23 -08:00
Alex Chan
cf1b407207
Add a type hint for db.close() ( #663 )
...
Closes #662
2025-10-01 13:37:05 -07:00
Simon Willison
094b010fd8
db.table() only returns tables, added db.view()
...
* db.table() only returns tables, added db.view(), closes #657
* Massive documentation update for db.table()
Refs #656
2025-05-08 23:19:36 -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
0e4e270d44
Test against multiple SQLite versions ( #654 )
...
* Test against pre-upsert SQLite 3.23.1
Borrowed from 8f86d2af6
* Try this on Python 3.9
* select ... from pragma_function_list()
Refs https://github.com/simonw/sqlite-utils/pull/654#issuecomment-2860898278
* Fix spelling error
* Compatible with latest black
* Skip plugin test that needs pragma_function_list
Refs https://github.com/simonw/sqlite-utils/pull/654#issuecomment-2860924225
* Ran cog
2025-05-07 17:49:50 -07:00
Simon Willison
4dc2e2e9c8
Use REAL for floating point columns if table is strict, closes #644
...
Refs #645
2024-11-23 14:27:21 -08:00
liunux4odoo
7423296ec7
include_rank parameter for Table.search
...
* Add `include_rank` parameter to `Table.search`
* Test for .search(include_rank)
* Docs for table.search(include_rank)
https://github.com/simonw/sqlite-utils/pull/628
Refs #480
---------
Co-authored-by: Simon Willison <swillison@gmail.com>
2024-11-23 12:34:27 -08:00
Mat Miller
42230709f7
Recreate indexes when calling transform when possible ( #634 )
...
* Recreate indexes when calling transform when possible and raise an error when they cannot be retained automatically
* Docs for sqlite_utils.db.TransformError
Co-authored-by: Simon Willison <swillison@gmail.com>
2024-11-23 12:17:15 -08:00
Simon Willison
8906f57740
Hack to support reuse of memory command, closes #643
2024-11-08 11:17:17 -08:00
Simon Willison
dc79454234
Fix for np.int8 error, refs #632
...
Also refs:
- https://github.com/simonw/llm/issues/531
2024-07-18 11:32:48 -07:00
Simon Willison
70cc0c91ab
Drop support for Python 3.7
...
* Drop support for Python 3.7, closes #616
* Bumped versions on a whole lot of GitHub Actions
2024-01-30 18:37:38 -08:00
Simon Willison
ff57a97482
Upgrade to latest Black
2024-01-30 18:18:52 -08:00
Taj Khattra
1500c19bd0
Add more STRICT table support ( #604 )
...
* Add more STRICT table support per https://github.com/simonw/sqlite-utils/issues/344#issuecomment-982014776 .
* Make `table.transform()` preserve STRICT mode.
* Fix mypy failures in PR #604
* Link to SQLITE strict page in a few places
2023-12-07 21:05:27 -08:00
Simon Willison
88bd372205
str, int, bytes aliases for column types, closes #606
2023-12-06 10:49:21 -08:00
Harald Nezbeda
347fdc865e
Map datetime.timedelta to text columns, closes #522
2023-11-03 17:49:50 -07:00
Simon Willison
b92ea4793c
Fixed spelling of wrappping
2023-11-03 17:31:49 -07:00
Simon Willison
1c6ea54338
.transform() now preserves rowid values
...
* .transform() now preserves rowid values, refs #592
* Test transform rowids against different table types, closes #592
2023-09-08 17:45:30 -07:00
Simon Willison
509857ee87
.add_foreign_keys() uses .transform() instead of PRAGMA writable_schema
...
Closes #577
This should solve all sorts of problems seen by users of platforms that throw errors on writable_schema.
Also added `add_foreign_keys=` and `foreign_keys=` parameters to `table.transform()`.
2023-08-17 17:48:08 -07:00
Simon Willison
374a816c72
Database(..., execute_plugins=False) mechanism, refs #575
2023-07-22 16:06:11 -07:00
Alex Garcia
3f80a02698
prepare_connection plugin hook
...
Closes:
- #574
Refs #567
---------
Co-authored-by: Simon Willison <swillison@gmail.com>
2023-07-22 15:59:08 -07:00
Simon Willison
61aaa69815
.transform(..., keep_table=name) parameter, closes #571
...
Also type hints for the transform_sql() method
2023-07-22 15:32:09 -07:00
Simon Willison
82e8cd3667
db.rename_table() method, refs #565
2023-07-22 12:38:31 -07:00
Simon Willison
86a352f8b7
Fixed mypy error, refs #568
2023-07-22 12:27:41 -07:00
Simon Willison
58b577279f
table.create(..., replace=True / ignore = True) closes #568
2023-07-22 12:15:40 -07:00
Simon Willison
f5c63088e1
Use sqlean if available in environment ( #560 )
...
Closes #559
Closes #235
Refs https://github.com/simonw/llm/issues/60
- Uses `sqlean` in place of `sqlite3` if `sqlean.py` is installed
- Uses `sqlite-dump` if available and `conn.iterdump()` does not exist
- New `with db.ensure_autocommit_off()` method for ensuring autocommit is off, used by `enable_wal()` and `disable_wal()`.
2023-06-25 16:25:51 -07:00
Simon Willison
6027f3ea69
No need to show common values if everything is null
...
Closes #547
2023-05-21 10:19:16 -07:00
Simon Willison
d2a7b15b2b
Analyze tables options: --common-limit, --no-most, --no-least
...
Closes #544
2023-05-21 09:19:30 -07:00
Simon Willison
c764a9ee8f
Avoid negative hashes in lambda names, refs #543
2023-05-08 15:12:39 -07:00
Simon Willison
eebd1a26ae
Removed FunctionAlreadyRegistered error, refs #526 , #525
2023-05-08 14:58:28 -07:00
Simon Willison
fca3ef8cf2
Applied Black, refs #526 , #525
2023-05-08 14:54:24 -07:00
Martin Carpenter
02f5c4d69d
Support repeated calls to Table.convert()
...
* Test repeated calls to Table.convert()
* Register Table.convert() functions under their own `lambda_hash` name
* Raise exception on registering identical function names
Refs #525
2023-05-08 14:53:58 -07:00
rhoboro
6500fed8b2
Transform no longer breaks non-string default values
...
Closes #509
2023-05-08 14:13:36 -07:00
Scott Perry
39ef137e67
Support self-referencing FKs in create ( #537 )
2023-05-08 14:10:00 -07:00
Simon Willison
455c35b512
.convert(skip_false) option, refs #527
2023-05-08 13:52:21 -07:00
Simon Willison
2376c452a5
upsert_all() now works with not_null - refs #538
2023-05-08 12:24:19 -07:00
Simon Willison
92f77c3262
Ran against updated Black
2023-03-12 14:28:43 -07:00
Simon Willison
965ca0d5f5
Apply no_implicit_optional codemod, closes #512
2022-11-15 22:25:44 -08:00
Simon Willison
defa2974c6
jsonify_if_needed output of convert() functions, closes #495
2022-10-25 14:23:24 -07:00
Simon Willison
05e2bb85fc
db.close() method, closes #504
2022-10-25 13:57:43 -07:00
Simon Willison
c5d7ec1dd7
Fix for mypy issue, refs #503
2022-10-25 13:21:37 -07:00
Simon Willison
7ca497a8f5
repr improvements, refs #503
2022-10-25 13:14:41 -07:00
Jacob Chapman
ecf1d40112
table.search_sql(include_rank=True) option ( #480 )
...
* search_sql add include_rank option
* add test
* add FTS4 test
* Apply Black
Thanks, @chapmanjacobd
2022-08-30 20:40:35 -07:00
Simon Willison
104f37fa4d
db[table].create(..., transform=True) and create-table --transform
...
Closes #467
2022-08-27 16:17:55 -07:00
Simon Willison
36ffcafb1a
table.default_values property, closes #475
...
Refs #468
2022-08-27 15:42:58 -07:00
Forest Gregg
c5f8a2eb1a
in extract code, check equality witH IS instead of = for nulls ( #455 )
...
sqlite "IS" is equivalent to SQL "IS NOT DISTINCT FROM"
close #423
2022-08-27 07:45:03 -07:00
Simon Willison
b5e902fcb0
Applied Black
2022-07-28 08:13:47 -07:00
Simon Willison
573de14ab6
Improved docstring comments for Table class and db.table()
2022-07-27 17:28:46 -07:00