Simon Willison
f8d3b7cfe5
sqlite-utils add-foreign-key books.db books author_id authors id
...
Command for adding foreign keys to existing tables. Closes #2
2019-02-24 13:33: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
8a5d0d80c3
sqlite-utils create-index command, closes #14
2019-02-24 11:11:21 -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
10e3aab4c6
Fixed typo with last_pk
2019-02-23 22:49:54 -08:00
Simon Willison
6c3f5e6479
Added --table and --fmt options for table output using tabulate
2019-02-23 22:45:17 -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
e3c0ed1b1a
sqlite-utils tables now takes --counts, --columns, --csv, --nl
2019-02-22 18:12:53 -08:00
Simon Willison
c7dbb03a10
Added 'sqlite-utils rows db.db tablename' command
2019-02-22 17:52:17 -08:00
Simon Willison
f2ca48c0da
Default command now executes queries, --csv or --json
...
I replaced the following commands:
sqlite-utils json db.db "select * from table"
sqlite-utils csv db.db "select * from table"
With a unified 'query' command, which is now set as the default:
sqlite-utils db.db "select * from table"
sqlite-utils db.db "select * from table" --csv
2019-02-22 17:40:21 -08:00
Simon Willison
3095f2e671
Added db[table].rows iterator
2019-02-21 21:29:50 -08:00
Simon Willison
62e1edeaf6
[] escaping for FTS columns
2019-02-21 20:17:58 -08:00
Simon Willison
fd1b6eb82d
Help text for enable-fts and populate-fts
2019-02-07 21:25:26 -08:00
Simon Willison
3f8ef35b2a
enable-fts and populate-fts CLI commands
2019-02-07 21:18:24 -08:00
Simon Willison
ac9311aaf5
Refactored insert and upsert to share the same options
2019-02-06 21:50:25 -08:00
Simon Willison
7aab60d876
Handle datetime.date and datetime.time
2019-02-06 21:15:08 -08:00
Simon Willison
441c131db5
Better --help text for insert command
2019-01-29 07:40:34 -08:00
Simon Willison
1843d55615
@cli.command(name="csv") instead of import csv as csv_std
2019-01-29 07:37:12 -08:00
Simon Willison
82f0f6076a
sqlite-utils insert db.db foo - --csv
...
New option for efficiently inserting rows from a CSV.
Uses a generator so this will happily consume enormous CSV files without
needing to slurp the whole thing into memory first.
2019-01-29 07:28:12 -08:00
Simon Willison
50589f8523
CLI insert tool now uses generators, closes #7
...
Also cleaned up the logic so we commit rows in batches too.
2019-01-27 22:26:45 -08:00
Simon Willison
f0afa5646b
insert_all() now accepts generator, closes #7
2019-01-27 22:12:18 -08:00
Simon Willison
5309c5c775
sqlite-utils insert ... --nl option, closes #6
2019-01-27 18:17:38 -08:00
Simon Willison
57fc8ce55e
Database() constructor works with pathlib.Path
2019-01-27 15:53:41 -08:00
Simon Willison
3f2e711a4b
Refactored to use itertools
...
Found an itertools mechanism that works for iterating
through the current and next row in the cursor.
2019-01-26 10:59:01 -08:00
Simon Willison
5466c9745d
sqlite-utils json dogs.db "select * from dogs"
2019-01-25 18:06:29 -08:00
Simon Willison
c83dd8a5eb
sqlite-utils csv data.db "select ..." command
2019-01-25 07:50:20 -08:00
Simon Willison
9501ba4bf1
sqlite-utils table_names blah.db is now tables blah.db
...
Travis tests were failing because on OS X the command was this:
sqlite-utils table_names blah.db
But in Travis CI the command was this:
sqlite-utils table-names blah.db
Renaming it to tables fixes this inconsistency.
2019-01-24 23:04:52 -08:00
Simon Willison
b30f924c49
Implemented 'sqlite-utils upsert my.db tablename --pk=x'
2019-01-24 21:20:10 -08:00
Simon Willison
9e74289397
'sqlite-utils insert tablename file.json' command
2019-01-24 21:06:41 -08:00
Simon Willison
0a8194e730
sqlite-utils optimize command, .optimize() and .detect_fts() table methods
2019-01-24 20:35:51 -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
fd5829b27d
First CLI command: sqlite-utils table_names test.db
2019-01-24 19:30:47 -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
02862be04c
Default to FTS5
2018-08-12 17:21:55 -07:00
Simon Willison
9eacd30b1d
New column_order= parameter for setting column order
2018-08-08 16:06:49 -07:00
Simon Willison
72644b6e3f
Support method chaining, added .last_id for accessing lastrowid
...
Also shipping as 0.5
2018-08-05 18:42:43 -07:00
Simon Willison
a86c3ee832
Added db.create_view(name, sql) method
2018-08-02 08:24:16 -07:00
Simon Willison
741e8f7fe5
Make .indexes compatible with older SQLite versions ( #1 )
...
Older SQLite versions return a different set of columns from the PRAGMA we are using.
2018-08-02 08:17:29 -07:00
Simon Willison
0aa28293ad
Fix compatibility with SQLite prior to 3.16.0
...
pragma_index_info() and pragma_index_list() were introduced in 3.16.0 but the
version of SQLite running in Travis CI is earlier than that, hence the test
failures:
https://travis-ci.com/simonw/sqlite-utils/jobs/137617744
2018-08-01 08:29:53 -07:00
Simon Willison
4427d2d96f
table.create_index(columns, index_name) method
2018-08-01 08:20:44 -07:00
Simon Willison
c611ed80d2
.indexes property for introspecting indexes
2018-07-31 18:31:29 -07:00