Simon Willison
617e6f070c
enable_fts(..., tokenize=X) parameter, refs #130
2020-08-01 13:40:36 -07:00
Simon Willison
f804690274
Support inserting UUID and memoryview, closes #128
2020-07-29 18:10:33 -07:00
Thomas Sibley
ae4593316c
Add insert --truncate option
...
Deletes all rows in the table (if it exists) before inserting new rows.
SQLite doesn't implement a TRUNCATE TABLE statement but does optimize an
unqualified DELETE FROM.
This can be handy if you want to refresh the entire contents of a table
but a) don't have a PK (so can't use --replace), b) don't want the table
to disappear (even briefly) for other connections, and c) have to handle
records that used to exist being deleted.
Ideally the replacement of rows would appear instantaneous to other
connections by putting the DELETE + INSERT in a transaction, but this is
very difficult without breaking other code as the current transaction
handling is inconsistent and non-systematic. There exists the
possibility for the DELETE to succeed but the INSERT to fail, leaving an
empty table. This is not much worse, however, than the current
possibility of one chunked INSERT succeeding and being committed while
the next chunked INSERT fails, leaving a partially complete operation.
2020-07-08 10:26:20 -07:00
Simon Willison
af3f81b540
Store decimal.Decimal in DB as FLOAT, closes #110
2020-05-10 18:50:03 -07:00
Simon Willison
5c1df4e306
replace=True and ignore=True parameters for create_view(), closes #106
2020-05-02 09:02:04 -07:00
Simon Willison
d56029549a
Serialize JSON with non-JSON values, closes #102
2020-05-01 13:45:39 -07:00
Simon Willison
2ab62bcd54
New columns= parameter for over-riding column types, closes #100
2020-04-17 16:53:25 -07:00
Simon Willison
125c625fbc
.rows_where(..., order_by=) argument, closes #76
2020-04-15 20:12:55 -07:00
Simon Willison
7e4b9997c2
Database(..., recreate=True) option, refs #97
2020-04-12 20:46:51 -07:00
Simon Willison
635c91475a
Only set last_pk on singular .insert()/.update(), refs #98
2020-04-12 20:22:49 -07:00
bob
8ea626e5fc
Add type conversion for Panda's Timestamp ( #96 )
...
Thanks, @b0b5h4rp13!
2020-03-30 21:40:48 -07:00
Simon Willison
1125460497
Improved column type introspection, closes #92
2020-03-14 13:04:06 -07:00
Simon Willison
0c36feb6ca
.enable_fts() now works with columns with spaces in them, closes #90
2020-03-01 22:10:43 -08:00
Simon Willison
04ec53c039
Validate column names in more places, refs #86
2020-02-26 20:55:17 -08:00
Simon Willison
f9473ace14
disable-fts and .disable_fts(), closes #88
2020-02-26 20:40:35 -08:00
Simon Willison
b0ca657f49
Disallow square braces in column names, closes #86
2020-02-26 20:16:02 -08:00
Simon Willison
685e6a1bb3
Detect subclasses of dict/tuple/list, fixes #87
2020-02-15 18:20:39 -08:00
Simon Willison
6f3cb2c106
create_index now works with columns with spaces, closes #85
2020-02-10 21:13:15 -08:00
Simon Willison
0eda638d81
table.exists() now a documented method, closes #83
2020-02-08 15:56:03 -08:00
Simon Willison
7c28a4d133
Fix for upsert(hash_id=) bug, closes #84
2020-02-06 23:17:06 -08:00
Simon Willison
5ecf3ffdea
Extracted detect_column_types as suggest_column_types, refs #81
2020-02-01 13:38:51 -08:00
Simon Willison
e8b2b7383b
New conversions= feature, closes #77
...
Pull request: #78
2020-01-30 16:24:30 -08:00
Simon Willison
489eda92bc
.upsert() and upsert_all() require pk=, closes #73
2020-01-05 09:20:11 -08:00
Simon Willison
84bcabd093
New upsert implementation, refs #66
2019-12-30 05:29:23 +00:00
Simon Willison
cfbc09967e
Ran black, plus added comments for next step
...
Refs #66
2019-12-30 05:29:23 +00:00
Simon Willison
607a2a9ff6
insert --replace and insert(..., replace=True)
...
Refs #66
2019-12-30 05:29:23 +00:00
Simon Willison
8dab9fd1cc
insert_all() / .upsert_all() work with empty list ( #64 )
...
Closes #52
2019-11-06 20:32:37 -08:00
Simon Willison
169ea455fc
Added table.delete_where(), closes #62
2019-11-04 08:18:06 -08:00
Simon Willison
19073d6d97
Added table.delete(pk) method, refs #62
2019-11-04 08:08:01 -08:00
Simon Willison
2ca63e3b2d
db.triggers and table.triggers introspection ( #60 )
...
Closes #59
2019-09-02 17:09:41 -07:00
Amjith Ramanujam
405e092d59
Option to add triggers when enabling FTS ( #57 )
...
--create-triggers CLI option and create_triggers=True in the Python library
* Add an option to create triggers for fts table.
* Add cli option for the create-update-trigger.
* Add tests for the create-update-trigger option.
* Change FTS table escaping to square brackets.
2019-09-02 16:42:28 -07:00
Simon Willison
9faa982226
Ability to introspect and run queries against views ( #55 )
...
* db.views_names() method and and db.views property
* Separate View and Table classes, both subclassing new Queryable class
* view.drop() method
* Updated documentation
2019-08-23 15:19:41 +03:00
Simon Willison
5516175ca6
Allow table objects to be passed to .m2m()
2019-08-04 05:09:17 +03:00
Simon Willison
d96a8f149e
Use existing m2m table if one exists
2019-08-03 21:16:51 +03:00
Simon Willison
b9256413d2
db.m2m_table_candidates(table, other_table)
2019-08-03 21:07:06 +03:00
Simon Willison
b6b92980c0
table.m2m(..., m2m_table=x) argument
2019-08-03 20:51:22 +03:00
Simon Willison
ba1211d445
Implemented .m2m(table, lookup=...)
2019-08-03 17:28:03 +03:00
Simon Willison
35eeafaaa3
table.m2m(...) method, with tests
2019-07-31 08:51:50 +03:00
Simon Willison
bc9c4db34b
.update(...) with no update argument sets last_pk
2019-07-28 17:59:52 +03:00
Simon Willison
4ab8d46b03
Added table.update(pk, ..., alter=True)
2019-07-28 17:51:49 +03:00
Simon Willison
e4a11b1815
Refactor .update() to use .get()
...
.pks introspection now returns [rowid] for rowid tables.
2019-07-28 15:44:33 +03:00
Simon Willison
455071f3c5
Unit tests for .update()
...
Also now set .last_pk to lastrowid for rowid tables.
2019-07-28 15:30:28 +03:00
Simon Willison
15368c5f59
First working version of .update(), refs #35
2019-07-28 15:15:50 +03:00
Simon Willison
535a5ea476
Documentation and tests for table.drop() method
2019-07-28 14:57:02 +03:00
Simon Willison
0c1b8b7f96
Use assertion to enforce <=999 columns
2019-07-28 14:41:57 +03:00
Simon Willison
62d2922528
Fix for too many SQL variables, closes #50
2019-07-28 14:10:56 +03:00
Simon Willison
941d281aee
extracts= table parameter, closes #46
2019-07-23 10:00:42 -07:00
Simon Willison
e22cfcd953
Removed a TODO which is now done
2019-07-23 15:05:04 +02:00
Simon Willison
5805024316
Implemented table.lookup(...), closes #44
...
* Add pk column if missing from insert
* Implemented table.lookup(...)
2019-07-23 06:06:59 -07:00
Simon Willison
f3a4c3d3ee
db.create_table() now remembers configs
2019-07-23 09:47:19 +02:00