Commit graph

82 commits

Author SHA1 Message Date
Simon Willison
00c5a49a87 Option to ignore inserts if primary key exists already
Support for SQLite's INSERT OR IGNORE

In the API layer it looks like this:

    fresh_db["test"].insert({"id": 1, "bar": 3}, ignore=True)

For the CLI layer it looks like this:

    $ sqlite-utils insert data.db dogs dogs.json --ignore

Closes #21
2019-05-28 21:15:57 -07:00
Simon Willison
092e1368ed Fixed typo 2019-05-25 07:24:17 -07:00
Simon Willison
eff52023c6 alter=True/--alter option to automatically add missing columns
Closes #18
2019-05-24 17:41:04 -07:00
Simon Willison
3cab079d3e add-column col_type now optional, defaults to str 2019-02-24 14:24:00 -08:00
Simon Willison
557dc3f9a7 Improved foreign_keys= argument, closes #17 2019-02-24 14:12:45 -08:00
Simon Willison
e1ca938aa1 table.add_foreign_key(column, other_table, other_column)
New mechanism for adding foreign key constraints to an existing SQLite
table.

SQLite ALTER TABLE does not support this out-of-the-box, so I instead
had to write some careful code that uses PRAGMA writable_schema = 1 to
directly modify the sqlite_master table.

Refs #2
2019-02-24 13:10:51 -08:00
Simon Willison
0bc49e938e 'sqlite-utils add-column name type' command, closes #15 2019-02-24 12:04:33 -08:00
Simon Willison
6d25f648ed add_column now accepts explicit SQLite types, refs #15 2019-02-24 11:49:31 -08:00
Simon Willison
c5286d2c66 Black formatting 2019-02-24 11:40:58 -08:00
Simon Willison
dc2560879e table.add_column(name, type) method, refs #15 2019-02-24 11:40:26 -08:00
Simon Willison
7784b924a1 Added create_index(..., if_not_exists=True), refs #14 2019-02-24 10:46:44 -08:00
Simon Willison
e7ffbcdb36 Ability to create unique indexes, refs #14 2019-02-24 10:41:51 -08:00
Simon Willison
dbf239e3fc hash_id= mechanism for setting ID using content hash, closes #13 2019-02-23 20:36:40 -08:00
Simon Willison
e615d22c55
Support for numpy types, closes #11 (#12) 2019-02-23 20:02:19 -08:00
Simon Willison
ca225b02c0 Prettier indentation for CREATE TABLE 2019-02-23 12:52:04 -08:00
Simon Willison
f0afa5646b insert_all() now accepts generator, closes #7 2019-01-27 22:12:18 -08:00
Simon Willison
57fc8ce55e Database() constructor works with pathlib.Path 2019-01-27 15:53:41 -08:00
Simon Willison
66fd63b119 Ability to list just FTS4 or FTS5 table names 2019-01-24 19:57:04 -08:00
Simon Willison
231224ba1a Added vacuum to CLI and Python API 2019-01-24 19:39:04 -08:00
Simon Willison
228d595f7d Allow column names to be reserved words 2019-01-24 19:01:10 -08:00
Simon Willison
6ad9037c96 Added support for bytes and datetime.datetime 2019-01-24 18:59:21 -08:00
Simon Willison
fcc38b9ff2 Moved fixtures into conftest.py 2018-08-12 17:25:39 -07:00
Simon Willison
9eacd30b1d New column_order= parameter for setting column order 2018-08-08 16:06:49 -07:00
Simon Willison
a86c3ee832 Added db.create_view(name, sql) method 2018-08-02 08:24:16 -07:00
Simon Willison
4427d2d96f table.create_index(columns, index_name) method 2018-08-01 08:20:44 -07:00
Simon Willison
515d362ad6 .table_names and .tables properties plus expanded docs 2018-07-31 17:35:36 -07:00
Simon Willison
c446e22f34 Moved fixtures to fixtures.py, added .schema test 2018-07-31 08:55:24 -07:00
Simon Willison
5deb65f062 Now you just 'from sqlite_utils import Database'
Plus fixed ad_id in the Russian ads example in the docs
2018-07-30 20:30:23 -07:00
Simon Willison
e51f36d3eb Added table.foreign_keys property, fixed bug in foreign key creation 2018-07-28 15:41:18 -07:00
Simon Willison
95bce37ad3 Store list/dict/tuple values as JSON strings 2018-07-28 15:20:29 -07:00
Simon Willison
acea54877c Create table now works for pure m2m where both rows are foreign keys 2018-07-28 15:06:59 -07:00
Simon Willison
bd71be32ab Initial project layout + database table creation tools 2018-07-28 06:46:17 -07:00