- Dropped support for Python 3.6. Tests now ensure compatibility with Python 3.11. (#517)
- Automatically locates the SpatiaLite extension on Apple Silicon. Thanks, Chris Amico. (#536)
- New
--raw-lines
option for thesqlite-utils query
andsqlite-utils memory
commands, which outputs just the raw value of the first column of evy row. (#539) - Fixed a bug where
table.upsert_all()
failed if thenot_null=
option was passed. (#538) - Fixed a
ResourceWarning
when usingsqlite-utils insert
. (#534) - Now shows a more detailed error message when
sqlite-utils insert
is called with invalid JSON. (#532) table.convert(..., skip_false=False)
andsqlite-utils convert --no-skip-false
options, for avoiding a misfeature where the convert() mechanism skips rows in the database with a falsey value for the specified column. Fixing this by default would be a backwards-incompatible change and is under consideration for a 4.0 release in the future. (#527)- Tables can now be created with self-referential foreign keys. Thanks, Scott Perry. (#537)
sqlite-utils transform
no longer breaks if a table defines default values for columns. Thanks, Kenny Song. (#509)- Fixed a bug where repeated calls to
table.transform()
did not work correctly. Thanks, Martin Carpenter. (#525) - Improved error message if
rows_from_file()
is passed a non-binary-mode file-like object. (#520)