pull_requests
102 rows where repo = 140912432
This data as json, CSV (advanced)
Suggested facets: state, milestone, draft, author_association, created_at (date), updated_at (date), closed_at (date), merged_at (date)
id ▼ | node_id | number | state | locked | title | user | body | created_at | updated_at | closed_at | merged_at | merge_commit_sha | assignee | milestone | draft | head | base | author_association | repo | url | merged_by | auto_merge |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
205770996 | MDExOlB1bGxSZXF1ZXN0MjA1NzcwOTk2 | 1 | closed | 0 | Make .indexes compatible with older SQLite versions | simonw 9599 | Older SQLite versions return a different set of columns from the PRAGMA we are using. | 2018-08-02T15:17:05Z | 2018-08-02T15:17:30Z | 2018-08-02T15:17:30Z | 2018-08-02T15:17:30Z | 741e8f7fe563e18fe9a12ac1ce38157e8c903505 | 0 | 9e674311065b8372f0a93becc8e7357ceffd353b | 0aa28293adedc488eb9107dc52b5e9a124887fbd | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/1 | ||||
247576942 | MDExOlB1bGxSZXF1ZXN0MjQ3NTc2OTQy | 4 | closed | 0 | Fts5 | simonw 9599 | 2019-01-25T06:54:05Z | 2019-01-25T06:54:33Z | 2019-01-25T06:54:33Z | 2019-01-25T06:54:33Z | 42b2b4b785e3163371e92a9cc085bc47e7c83107 | 0 | 7f205d2308443557bcaec497b3d0badc0dc26f06 | ccb2a1e729780689188005a52c362b7e963f71e8 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/4 | |||||
247861419 | MDExOlB1bGxSZXF1ZXN0MjQ3ODYxNDE5 | 5 | closed | 0 | Run Travis tests against Python 3.8-dev | simonw 9599 | 2019-01-26T02:30:55Z | 2019-01-26T02:37:54Z | 2019-01-26T02:37:54Z | 2019-01-26T02:37:54Z | 3a944d0c077c203277f13dd69387eb84b5c88d3e | 0 | b2f81e86074526d6e4dc9e39e791deff195669de | 9a4d1ff0a268c7df7839389acd92d48752d24b95 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/5 | |||||
249680944 | MDExOlB1bGxSZXF1ZXN0MjQ5NjgwOTQ0 | 9 | closed | 0 | :pencil: Updates my_database.py to my_database.db | jefftriplett 50527 | I noticed that both `.py` and `.db` were used in the docs and assumed you'd prefer `.db`. | 2019-02-01T17:35:43Z | 2019-02-24T03:55:04Z | 2019-02-24T03:55:04Z | 2019-02-24T03:55:04Z | c5068a0972651b3e359ebc2d6c1486b8b7d2c242 | 0 | 1ad604fbbd3311f041357190796a3613c0c729d1 | 441c131db5cc68e197db19f0623ff8a96c90c3ff | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/9 | ||||
255658112 | MDExOlB1bGxSZXF1ZXN0MjU1NjU4MTEy | 12 | closed | 0 | Support for numpy types, closes #11 | simonw 9599 | 2019-02-24T03:57:32Z | 2019-02-24T04:02:20Z | 2019-02-24T04:02:20Z | 2019-02-24T04:02:20Z | e615d22c5564ea1f32abb086088b2700110be10a | 0 | 7c20e60685088d6da0739749305215790ca8375a | c5068a0972651b3e359ebc2d6c1486b8b7d2c242 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/12 | |||||
292879204 | MDExOlB1bGxSZXF1ZXN0MjkyODc5MjA0 | 32 | closed | 0 | db.add_foreign_keys() method | simonw 9599 | Refs #31. Still TODO: - [x] Unit tests - [x] Documentation | 2019-06-28T15:40:33Z | 2019-06-29T06:27:39Z | 2019-06-29T06:27:39Z | 2019-06-29T06:27:39Z | 997d8758fc8992be93d5984556e5b9e3bad4205f | 0 | fc81588cc31df58374c996884c67cedd98a06f4a | 86bd2bba689e25f09551d611ccfbee1e069e5b66 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/32 | ||||
293117183 | MDExOlB1bGxSZXF1ZXN0MjkzMTE3MTgz | 34 | closed | 0 | sqlite-utils index-foreign-keys / db.index_foreign_keys() | simonw 9599 | Refs #33 - [x] `sqlite-utils index-foreign-keys` command - [x] `db.index_foreign_keys()` method - [x] unit tests - [x] documentation | 2019-06-30T16:43:40Z | 2019-06-30T23:50:55Z | 2019-06-30T23:50:55Z | 2019-06-30T23:50:54Z | e8f887ef4a0977243811b90bc2ce9aed9d2c206a | 0 | d82b000e3d55067516e2ce42f131cf4695e80dca | 0fe3b38290e1bb2d92746d90318d8662b57218bd | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/34 | ||||
297412464 | MDExOlB1bGxSZXF1ZXN0Mjk3NDEyNDY0 | 38 | closed | 0 | table.update() method | simonw 9599 | Refs #35 Still to do: - [x] Unit tests - [x] Switch to using `.get()` - [x] Better exceptions, plus unit tests for what happens if pk does not exist - [x] Documentation - [x] Ensure compound primary keys work properly - [x] `alter=True` support | 2019-07-14T17:03:49Z | 2019-07-28T15:43:51Z | 2019-07-28T15:43:51Z | 2019-07-28T15:43:51Z | 0747dabb24b608e8524de4858ce50c60ba7e471b | 0 | 16d7008002b43cf47a973791da93e5cdd5913fc3 | a6749cdf43229c4f7864c946496e9ac0141627d9 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/38 | ||||
297459797 | MDExOlB1bGxSZXF1ZXN0Mjk3NDU5Nzk3 | 40 | closed | 0 | .get() method plus support for compound primary keys | simonw 9599 | - [x] Tests for the `NotFoundError` exception - [x] Documentation for `.get()` method - [x] Support `--pk` multiple times to define CLI compound primary keys - [x] Documentation for compound primary keys | 2019-07-15T03:43:13Z | 2019-07-15T04:28:57Z | 2019-07-15T04:28:52Z | 2019-07-15T04:28:52Z | c65b67ca46f70e2da46a5b945f4ed358173262e9 | 0 | b5a5df6d0ed47f33f6e1b4873948ead9a7c71060 | 65b2156d9cc0aa6b5c3dc7a6bd600d98b281a13b | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/40 | ||||
300286535 | MDExOlB1bGxSZXF1ZXN0MzAwMjg2NTM1 | 45 | closed | 0 | Implemented table.lookup(...), closes #44 | simonw 9599 | 2019-07-23T13:03:30Z | 2019-07-23T13:07:00Z | 2019-07-23T13:07:00Z | 2019-07-23T13:07:00Z | 580502431614d3653c93249988290265f3163d4b | 0 | c0852ce018425450d6c040040f32729d41ff635c | f3a4c3d3ee6475a6caf3c9606656dbaf1df020b7 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/45 | |||||
300377599 | MDExOlB1bGxSZXF1ZXN0MzAwMzc3NTk5 | 47 | closed | 0 | extracts= table parameter | simonw 9599 | Still needs docs. Refs #46 | 2019-07-23T16:30:29Z | 2019-07-23T17:00:43Z | 2019-07-23T17:00:43Z | 2019-07-23T17:00:43Z | 941d281aee6eac20ad64b505511da7e47f697700 | 0 | 1c9d08f75a48b2a3770f2a880462dc8b195289b7 | e22cfcd953f967f6e9551b3a048d7c40726f349b | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/47 | ||||
301824097 | MDExOlB1bGxSZXF1ZXN0MzAxODI0MDk3 | 51 | closed | 0 | Fix for too many SQL variables, closes #50 | simonw 9599 | 2019-07-28T11:30:30Z | 2019-07-28T11:59:32Z | 2019-07-28T11:59:32Z | 2019-07-28T11:59:32Z | 9cb045284ede8009c12abdb1755b5b20f6ccff5f | 0 | 0c1b8b7f96be874bb63801f69323960f277aa49a | 9b7be79c86b4283f24a64f62257c918f12542997 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/51 | |||||
303990683 | MDExOlB1bGxSZXF1ZXN0MzAzOTkwNjgz | 53 | closed | 0 | Work in progress: m2m() method for creating many-to-many records | simonw 9599 | - [x] `table.insert({"name": "Barry"}).m2m("tags", lookup={"tag": "Coworker"})` - [x] Explicit table name `.m2m("humans", ..., m2m_table="relationships")` - [x] Automatically use an existing m2m table if a single obvious candidate exists (a table with two foreign keys in the correct directions) - [x] Require the explicit `m2m_table=` argument if multiple candidates for the m2m table exist - [x] Documentation Refs #23 | 2019-08-03T10:03:56Z | 2019-08-04T03:38:10Z | 2019-08-04T03:37:33Z | 2019-08-04T03:37:33Z | 4c0912dbf27b12071aca9569bcf7233e60f91c7c | 0 | 243bcaa1acd32a173c07b24dca553991493005a0 | e1021030dd2d8d4705ad0e7bae389eeaea7fa17b | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/53 | ||||
308292447 | MDExOlB1bGxSZXF1ZXN0MzA4MjkyNDQ3 | 55 | closed | 0 | Ability to introspect and run queries against views | simonw 9599 | See #54 | 2019-08-17T13:40:56Z | 2019-08-23T12:19:42Z | 2019-08-23T12:19:42Z | 2019-08-23T12:19:42Z | 9faa98222669723d31e918bb16a42c13c363817f | 0 | 4441d6d838fd7518ce715184361f549a04ec8b70 | 0e7b461eb3e925aef713206c15794ceae9259c57 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/55 | ||||
313007483 | MDExOlB1bGxSZXF1ZXN0MzEzMDA3NDgz | 56 | closed | 0 | Escape the table name in populate_fts and search. | amjith 49260 | The table names weren't escaped using double quotes in the populate_fts method. Reproducible case: ``` >>> import sqlite_utils >>> db = sqlite_utils.Database("abc.db") >>> db["http://example.com"].insert_all([ ... {"id": 1, "age": 4, "name": "Cleo"}, ... {"id": 2, "age": 2, "name": "Pancakes"} ... ], pk="id") <Table http://example.com (id, age, name)> >>> db["http://example.com"].enable_fts(["name"]) Traceback (most recent call last): File "<input>", line 1, in <module> db["http://example.com"].enable_fts(["name"]) File "/home/amjith/.virtualenvs/itsysearch/lib/python3.7/site-packages/sqlite_utils/db.py", l ine 705, in enable_fts self.populate_fts(columns) File "/home/amjith/.virtualenvs/itsysearch/lib/python3.7/site-packages/sqlite_utils/db.py", l ine 715, in populate_fts self.db.conn.executescript(sql) sqlite3.OperationalError: unrecognized token: ":" >>> ``` | 2019-09-01T06:29:05Z | 2019-09-02T17:23:21Z | 2019-09-02T17:23:21Z | 79852e97ecb69b88da87da0cba2a55887cf83bda | 0 | 83ca4c802f5d5102e73ff366e61514ded81dc7a1 | cb70f7d10996b844154bf3da88779dd1f65590bc | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/56 | |||||
313105634 | MDExOlB1bGxSZXF1ZXN0MzEzMTA1NjM0 | 57 | closed | 0 | Add triggers while enabling FTS | amjith 49260 | This adds the option for a user to set up triggers in the database to keep their FTS table in sync with the parent table. Ref: https://sqlite.org/fts5.html#external_content_and_contentless_tables I would prefer to make the creation of triggers the default behavior, but that will break existing usage where people have been calling `populate_fts` after inserting new rows. I am happy to make changes to the PR as you see fit. | 2019-09-02T04:23:40Z | 2019-09-03T01:03:59Z | 2019-09-02T23:42:29Z | 2019-09-02T23:42:29Z | 405e092d5916e70df10f82d15e9c052aa9ee8d80 | 0 | e01943271b17115fbe0e81d523126d2fb1c7c24b | cb70f7d10996b844154bf3da88779dd1f65590bc | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/57 | ||||
313383317 | MDExOlB1bGxSZXF1ZXN0MzEzMzgzMzE3 | 60 | closed | 0 | db.triggers and table.triggers introspection | simonw 9599 | Closes #59 | 2019-09-03T00:04:32Z | 2019-09-03T00:09:42Z | 2019-09-03T00:09:42Z | 2019-09-03T00:09:42Z | 2ca63e3b2de5408a860c6c7c1852deb9a138279e | 0 | b0a27fbb34b4362ef192deb560612fabf046cd32 | 405e092d5916e70df10f82d15e9c052aa9ee8d80 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/60 | ||||
337847573 | MDExOlB1bGxSZXF1ZXN0MzM3ODQ3NTcz | 64 | closed | 0 | test_insert_upsert_all_empty_list | simonw 9599 | 2019-11-07T04:24:45Z | 2019-11-07T04:32:38Z | 2019-11-07T04:32:38Z | 2019-11-07T04:32:38Z | 8dab9fd1ccf571e188eec9ccf606a0c50fccf200 | 0 | 8daea7f1265ddcce67d28258068a25666954000f | a0a65f9a6405079b01aefdbf4b5f507bc758567a | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/64 | |||||
337853394 | MDExOlB1bGxSZXF1ZXN0MzM3ODUzMzk0 | 65 | closed | 0 | Release 1.12.1 | simonw 9599 | 2019-11-07T04:51:29Z | 2019-11-07T04:58:48Z | 2019-11-07T04:58:47Z | 2019-11-07T04:58:47Z | 0a0cec3cf27861455e8cd1c4d84937825a18bb30 | 0 | 28f8a238ab8fc2a70ee81bd73de6c167d9db9cdf | 8dab9fd1ccf571e188eec9ccf606a0c50fccf200 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/65 | |||||
346264926 | MDExOlB1bGxSZXF1ZXN0MzQ2MjY0OTI2 | 67 | closed | 0 | Run tests against 3.5 too | simonw 9599 | 2019-11-27T14:20:35Z | 2019-12-31T01:29:44Z | 2019-12-31T01:29:43Z | 88375b0bc055067b996584f06ed85a9a90c5aa1a | 0 | 4c6e5a4486e0e17555774eb3279142234a8b4abc | 0a0cec3cf27861455e8cd1c4d84937825a18bb30 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/67 | ||||||
357992588 | MDExOlB1bGxSZXF1ZXN0MzU3OTkyNTg4 | 72 | closed | 0 | Fixed implementation of upsert | simonw 9599 | Refs #66 | 2019-12-30T05:08:05Z | 2019-12-30T05:29:24Z | 2019-12-30T05:29:24Z | 2019-12-30T05:29:24Z | 9f47e8b9a4cb788b48b76aee1333c6f3baaebbd6 | 0 | ab8a4bda75fc59871ba8445c6a0fb2332483029c | dc0a62556ec092be7b341c5220e0410354f7cd02 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/72 | ||||
359822773 | MDExOlB1bGxSZXF1ZXN0MzU5ODIyNzcz | 75 | closed | 0 | Explicitly include tests and docs in sdist | jayvdb 15092 | Also exclude 'tests' from runtime installation. | 2020-01-07T04:53:20Z | 2020-01-31T00:21:27Z | 2020-01-31T00:21:27Z | 2020-01-31T00:21:27Z | 0988f2eccc2dfa26b1a55243582222f540a72838 | 0 | 39a836450b23bf2fe1ba9a071a5a9a00a0949cd6 | 59a2e8ebdcbde7e6fb091b0556713ca5a20ea4e7 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/75 | ||||
369348084 | MDExOlB1bGxSZXF1ZXN0MzY5MzQ4MDg0 | 78 | closed | 0 | New conversions= feature, refs #77 | simonw 9599 | 2020-01-31T00:02:33Z | 2020-09-22T07:48:29Z | 2020-01-31T00:24:31Z | 2020-01-31T00:24:31Z | e8b2b7383bd94659d3b7a857a1414328bc48bc19 | 0 | 58190d67821aaa57c8ca0320a08e3691d6e27344 | 59a2e8ebdcbde7e6fb091b0556713ca5a20ea4e7 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/78 | |||||
369394043 | MDExOlB1bGxSZXF1ZXN0MzY5Mzk0MDQz | 80 | closed | 0 | on_create mechanism for after table creation | simonw 9599 | I need this for `geojson-to-sqlite`, in particular https://github.com/simonw/geojson-to-sqlite/issues/6 | 2020-01-31T03:38:48Z | 2020-01-31T05:08:04Z | 2020-01-31T05:08:04Z | e6dc95d19348e72b28b42e73a18737cb2e4563e0 | 0 | 45bf0c25492c276bde0b85868ffb55f169375bd7 | f7289174e66ae4d91d57de94bbd9d09fabf7aff4 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/80 | |||||
395258687 | MDExOlB1bGxSZXF1ZXN0Mzk1MjU4Njg3 | 96 | closed | 0 | Add type conversion for Panda's Timestamp | b0b5h4rp13 32605365 | Add type conversion for Panda's Timestamp, if Panda library is present in system (thanks for this project, I was about to do the same thing from scratch) | 2020-03-29T14:13:09Z | 2020-03-31T04:40:49Z | 2020-03-31T04:40:48Z | 2020-03-31T04:40:48Z | 8ea626e5fcdc4c9e52f615c6347e68173805f8b4 | 0 | 16ebbd2d494caabd0eeb502f8a944614b464bb12 | 22250a9c735077d6f365b73bf824e6c67b122c83 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/96 | ||||
445023326 | MDExOlB1bGxSZXF1ZXN0NDQ1MDIzMzI2 | 118 | closed | 0 | Add insert --truncate option | tsibley 79913 | 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-06T21:58:40Z | 2020-07-08T17:26:21Z | 2020-07-08T17:26:21Z | 2020-07-08T17:26:21Z | ae4593316ccf5e42ad26f27033193834a7e696c8 | 0 | 332f7d770b84734dbed4842ab3ed24ee5b687889 | f8277d0fb9c05a88a9ff01d996e31d55f0f0a645 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/118 | ||||
445833908 | MDExOlB1bGxSZXF1ZXN0NDQ1ODMzOTA4 | 120 | closed | 0 | Fix query command's support for DML | tsibley 79913 | See commit messages for details. I ran into this while investigating another feature/issue. | 2020-07-08T01:36:34Z | 2020-07-08T05:14:04Z | 2020-07-08T05:14:04Z | 2020-07-08T05:14:04Z | f8277d0fb9c05a88a9ff01d996e31d55f0f0a645 | 0 | 6a660d12a27864d6ab552e11eef9fd13bc281198 | d0cdaaaf00249230e847be3a3b393ee2689fbfe4 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/120 | ||||
475665984 | MDExOlB1bGxSZXF1ZXN0NDc1NjY1OTg0 | 142 | closed | 0 | insert_all(..., alter=True) should work for new columns introduced after the first 100 records | simonwiles 96218 | Closes #139. | 2020-08-28T22:22:57Z | 2020-08-30T07:28:23Z | 2020-08-28T22:30:14Z | 2020-08-28T22:30:14Z | 947bb7626fd1763608a470adf9cf5f156ef003e9 | 0 | 1b992c7c1e5855caa87c7939efad287052f446f3 | ea87c2b943fdd162c42a900ac0aea5ecc2f4b9d9 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/142 | ||||
475874493 | MDExOlB1bGxSZXF1ZXN0NDc1ODc0NDkz | 146 | closed | 0 | Handle case where subsequent records (after first batch) include extra columns | simonwiles 96218 | Addresses #145. I think this should do the job. If it meets with your approval I'll update this PR to include an update to the documentation -- I came across this bug while preparing a PR to update the documentation around `batch_size` in any event. | 2020-08-30T07:13:58Z | 2020-09-08T23:20:37Z | 2020-09-08T23:20:37Z | 2020-09-08T23:20:36Z | e6d202b742a7b531fffa593703d34f8337632d68 | 0 | 40fcea41525682fdc2f601da787b29d5a8517dcd | deb2eb013ff85bbc828ebc244a9654f0d9c3139e | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/146 | ||||
481616704 | MDExOlB1bGxSZXF1ZXN0NDgxNjE2NzA0 | 151 | closed | 0 | Tracer mechanism for seeing underlying SQL | simonw 9599 | Refs #150. Needs tests and documentation, including for the new `db.execute()` and `db.executescript()` methods. | 2020-09-07T19:46:43Z | 2020-09-07T21:57:00Z | 2020-09-07T21:57:00Z | 2020-09-07T21:57:00Z | cf2cb244faf992118f34aa196387a4ef8b39a20f | 0 | dc82bf371911d01ac140f40ea99d06d2daee507e | 3e87500e1561f5c4e105cd026d33e0f715cc7dea | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/151 | ||||
483027587 | MDExOlB1bGxSZXF1ZXN0NDgzMDI3NTg3 | 156 | closed | 0 | Typos in tests | simonwiles 96218 | One of these is my fault, and the other is one I just happened to come across. They're harmless, but might as well be fixed. | 2020-09-09T18:00:58Z | 2020-09-09T18:24:50Z | 2020-09-09T18:21:23Z | 2020-09-09T18:21:23Z | 367082e787101fb90901ef3214804ab23a92ce46 | 0 | b777776753ef08f35dfaa7d86b2d5082e8904f27 | 6be61263642d8e46ec54cf5f51af74e0df2f2393 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/156 | ||||
483175509 | MDExOlB1bGxSZXF1ZXN0NDgzMTc1NTA5 | 158 | closed | 0 | Fix accidental mega long line in docs | tomviner 167319 | 2020-09-09T22:31:23Z | 2020-09-16T06:21:43Z | 2020-09-16T06:21:43Z | 2020-09-16T06:21:43Z | 7805d53bcf11199bd1f2b07e05ae90151f9d0eb0 | 0 | 5c1d8a5f3ac8684657eefe4f57ff5ff605f6b633 | 367082e787101fb90901ef3214804ab23a92ce46 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/158 | |||||
490607949 | MDExOlB1bGxSZXF1ZXN0NDkwNjA3OTQ5 | 161 | closed | 0 | table.transform() method | simonw 9599 | Refs #114 - [x] Ability to change the primary key - [x] Support for changing default value for columns - [x] Support for changing `NOT NULL` status of columns - [x] Support for copying existing foreign keys and removing them - <strike>Support for `conversions=` parameter</strike> - [x] Detailed documentation - [x] `PRAGMA foreign_keys` stuff | 2020-09-21T23:16:59Z | 2020-09-22T07:48:24Z | 2020-09-22T04:20:02Z | 2020-09-22T04:20:02Z | 987dd123f2ac43c5ab66d69e59d454fe09660606 | 2.20 5897911 | 0 | dc3eb9c313502832c07f4de889aa60c373f45b52 | ef882986d07f157b6bcc6be3d7b64270fda3e523 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/161 | |||
490703173 | MDExOlB1bGxSZXF1ZXN0NDkwNzAzMTcz | 166 | closed | 0 | Keyword only arguments for transform() | simonw 9599 | Refs #165 | 2020-09-22T05:41:44Z | 2020-09-22T06:39:11Z | 2020-09-22T06:39:11Z | 2020-09-22T06:39:10Z | f8e10df00eae209fb0a1ea03384d9153f673a3ec | 0 | f8648cac3a6dda90578a1536cdae44d145633a2c | 987dd123f2ac43c5ab66d69e59d454fe09660606 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/166 | ||||
492257405 | MDExOlB1bGxSZXF1ZXN0NDkyMjU3NDA1 | 174 | closed | 0 | Much, much faster extract() implementation | simonw 9599 | Takes my test down from ten minutes to four seconds. Refs #172. | 2020-09-24T07:52:31Z | 2020-09-24T15:44:00Z | 2020-09-24T15:43:56Z | 2020-09-24T15:43:56Z | 022cdd97a9ddab1a152e23e1e1c42e78c1ed0fa9 | 0 | 227095ee90e2a92effec6478d3e629a24d3ccfba | 0ca5585fcb834122193e8e7186f926217b23cb8a | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/174 | ||||
493162767 | MDExOlB1bGxSZXF1ZXN0NDkzMTYyNzY3 | 178 | closed | 0 | Update README.md | shakeel 19921 | The `sqlite-utils insert releases.db releases - --pk` is missing the pk field name, added ` "id"` to fix it. | 2020-09-25T15:52:11Z | 2020-10-01T14:18:30Z | 2020-09-30T20:29:28Z | 2020-09-30T20:29:28Z | cada1017edcfa691c2314d7ad1b7c7576495317f | 0 | 0c6a81dae802a55d5469c18cd32402d11b6e8a59 | 94fc62857ee2655a21d85f6dae84b67bbfa5956d | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/178 | ||||
499603359 | MDExOlB1bGxSZXF1ZXN0NDk5NjAzMzU5 | 184 | closed | 0 | Test against Python 3.9 | simonw 9599 | 2020-10-08T01:37:05Z | 2020-10-08T01:44:06Z | 2020-10-08T01:44:06Z | 2020-10-08T01:44:06Z | 8e91de8e4edf6c8abeeccdf084b8870fff40a51a | 0 | 975c05b6dde9feebcdecabc047d47122ebcfdf84 | 7f4fe9190c1df7f0e72f9d7040327a43cf252c48 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/184 | |||||
510235909 | MDExOlB1bGxSZXF1ZXN0NTEwMjM1OTA5 | 189 | closed | 0 | Allow iterables other than Lists in m2m records | adamwolf 35681 | I was playing around with sqlite-utils, creating a Roam Research dogsheep-style importer for Datasette, and ran into a slight snag. I wanted to use a generator to add an order column in an importer. It looked something like: ``` def order_generator(iterable, attr=None): if attr is None: attr = "order" order: int = 0 for i in iterable: i[attr] = order order += 1 yield i ``` When I used this with `insert_all` and other things, it worked fine--but it didn't work as the `records` argument to `m2m`. I dug into it, and sqlite-utils is explicitly checking if the records argument is a list or a tuple. I flipped the check upside down, and now it checks if the argument is a mapping. If it's a mapping, it wraps it in a list, otherwise it leaves it alone. (I get that it might not really make sense to put the order column on the second table. I changed my import schema a bit, and no longer have a real example, but maybe this change still makes sense.) The automated tests still pass, but I did not add any new ones. Let me know what you think! I'm really loving Datasette and its ecosystem; thanks for everything! | 2020-10-26T18:47:44Z | 2020-10-27T16:28:37Z | 2020-10-27T16:24:21Z | 2020-10-27T16:24:21Z | f045d8559a6d2cb922a2de30fbcc896a4486b82f | 0 | 93230b2acb61635b6d5070ad9c65e7221c63b75a | e4f1c7b936981de29823730c5dbef4f4ba7a4286 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/189 | ||||
510956134 | MDExOlB1bGxSZXF1ZXN0NTEwOTU2MTM0 | 190 | closed | 0 | Progress bar for sqlite-utils insert command | simonw 9599 | Refs #173 | 2020-10-27T18:08:53Z | 2020-10-27T18:16:03Z | 2020-10-27T18:16:03Z | 2020-10-27T18:16:03Z | f99a23652910b03ac4669bbbb35a9b484451aabb | 0 | 62d678122a251812cd650845705ca7b9efcef86d | c7e5dd64513c0ec2b2df4c51c8df924c282417f9 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/190 | ||||
515014883 | MDExOlB1bGxSZXF1ZXN0NTE1MDE0ODgz | 195 | closed | 0 | table.search() improvements plus sqlite-utils search command | simonw 9599 | Refs #192. Still needs tests. | 2020-11-03T22:02:08Z | 2020-11-06T18:30:49Z | 2020-11-06T18:30:42Z | 2020-11-06T18:30:42Z | d411fba1f4124047429ac9d1175a04b36bf5bee9 | 0 | 973d94d44f27d35d856fe1cc822f9d5d40e4b5e6 | 59d8689ed0e6e042d99fd650896def680ca3c657 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/195 | ||||
521287994 | MDExOlB1bGxSZXF1ZXN0NTIxMjg3OTk0 | 203 | open | 0 | changes to allow for compound foreign keys | drkane 1049910 | Add support for compound foreign keys, as per issue #117 Not sure if this is the right approach. In particular I'm unsure about: - the new `ForeignKey` class, which replaces the namedtuple in order to ensure that `column` and `other_column` are forced into tuples. The class does the job, but doesn't feel very elegant. - I haven't rewritten `guess_foreign_table` to take account of multiple columns, so it just checks for the first column in the foreign key definition. This isn't ideal. - I haven't added any ability to the CLI to add compound foreign keys, it's only in the python API at the moment. The PR also contains a minor related change that columns and tables are always quoted in foreign key definitions. | 2020-11-16T00:30:10Z | 2023-01-25T18:47:18Z | 0507a9464314f84e9e58b1931c583df51d757d7c | 0 | 5e43e31c2b9bcf6b5d1460b0f848fed019ed42a6 | f1277f638f3a54a821db6e03cb980adad2f2fa35 | FIRST_TIME_CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/203 | ||||||
529090560 | MDExOlB1bGxSZXF1ZXN0NTI5MDkwNTYw | 204 | closed | 0 | use jsonify_if_need for sql updates | mfa 78035 | 2020-11-29T10:49:00Z | 2020-12-08T17:49:42Z | 2020-12-08T17:49:42Z | 2020-12-08T17:49:42Z | c5f4f0f70ce394dfec6054c3c5aaedf330887093 | 0 | 8ea9ad1913aa63395391818ebb4e43bfce936dda | 60d3c4821be4cf25c41097c1e8b79b2e60c5ead5 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/204 | |||||
537791675 | MDExOlB1bGxSZXF1ZXN0NTM3NzkxNjc1 | 208 | closed | 0 | sqlite-utils analyze-tables command and table.analyze_column() method | simonw 9599 | Refs #207 - [x] Improve design of CLI output - [x] Truncate long values in least/most common - [x] Add a `-c` column selection option - [x] Tests - [x] Documentation | 2020-12-12T05:27:49Z | 2020-12-13T07:20:16Z | 2020-12-13T07:20:12Z | 2020-12-13T07:20:12Z | 69a121e08847acbf95abf0c2df1759fc73dc81b8 | 0 | 95a966bb6216215d40d0016d673a28b04428db43 | c5f4f0f70ce394dfec6054c3c5aaedf330887093 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/208 | ||||
560204306 | MDExOlB1bGxSZXF1ZXN0NTYwMjA0MzA2 | 224 | closed | 0 | Add fts offset docs. | polyrand 37962604 | The limit can be passed as a string to the query builder to have an offset. I have tested it using the shorthand `limit=f"15, 30"`, the standard syntax should work too. | 2021-01-22T20:50:58Z | 2021-02-14T19:31:06Z | 2021-02-14T19:31:06Z | 4d6ff040770119fb2c1bcbc97678d9deca752f2f | 0 | 341f50d2d95ba1d69ad64ba8c0ec0ffa9a68d063 | 36dc7e3909a44878681c266b90f9be76ac749f2d | NONE | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/224 | |||||
564215011 | MDExOlB1bGxSZXF1ZXN0NTY0MjE1MDEx | 225 | closed | 0 | fix for problem in Table.insert_all on search for columns per chunk of rows | nieuwenhoven 261237 | Hi, I ran into a problem when trying to create a database from my Apple Healthkit data using [healthkit-to-sqlite](https://github.com/dogsheep/healthkit-to-sqlite). The program crashed because of an invalid insert statement that was generated for table `rDistanceCycling`. The actual problem turned out to be in [sqlite-utils](https://github.com/simonw/sqlite-utils). `Table.insert_all` processes the data to be inserted in chunks of rows and checks for every chunk which columns are used, and it will collect all column names in the variable `all_columns`. The collection of columns is done using a nested list comprehension that is not completely correct. I'm using a Windows machine and had to make a few adjustments to the tests in order to be able to run them because they had a posix dependency. Thanks, kind regards, Frans ``` # this is a (condensed) chunk of data from my Apple healthkit export that caused the problem. # the 3 last items in the chunk have additional keys: metadata_HKMetadataKeySyncVersion and metadata_HKMetadataKeySyncIdentifier chunk = [{'sourceName': 'AppleÂ\xa0Watch van Frans', 'sourceVersion': '7.0.1', 'device': '<<HKDevice: 0x281cf6c70>, name:Apple Watch, manufacturer:Apple Inc., model:Watch, hardware:Watch3,4, software:7.0.1>', 'unit': 'km', 'creationDate': '2020-10-10 12:29:09 +0100', 'startDate': '2020-10-10 12:29:06 +0100', 'endDate': '2020-10-10 12:29:07 +0100', 'value': '0.00518016'}, {'sourceName': 'AppleÂ\xa0Watch van Frans', 'sourceVersion': '7.0.1', 'device': '<<HKDevice: 0x281cf6c70>, name:Apple Watch, manufacturer:Apple Inc., model:Watch, hardware:Watch3,4, software:7.0.1>', 'unit': 'km', 'creationDate': '2020-10-10 12:29:10 +0100', 'startDate': '2020-10-10 12:29:07 +0100', 'endDate': '2020-10-10 12:29:08 +0100', 'value': '0.00544049'}, {'sourceName': 'AppleÂ\xa0Watch van Frans', 'sourceVersion': '6.2.6', 'device': '<<HKDevice: 0x281cf83e0>, name:Apple Watch, manu… | 2021-01-29T20:16:07Z | 2021-02-14T21:04:13Z | 2021-02-14T21:04:13Z | 1cba965a1ddc2bd77db3bc3912aa7e8467e2fa2f | 0 | 929ea7551135df0cc2ac9d67f4fbbecf701a11f6 | 36dc7e3909a44878681c266b90f9be76ac749f2d | NONE | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/225 | |||||
573147168 | MDExOlB1bGxSZXF1ZXN0NTczMTQ3MTY4 | 233 | closed | 0 | Run tests against Ubuntu, macOS and Windows | simonw 9599 | Refs #232 | 2021-02-14T20:11:02Z | 2021-02-14T20:39:54Z | 2021-02-14T20:39:54Z | 2021-02-14T20:39:54Z | f51a1f6c3cb2929bcf79cb4efe3b2a9886d9c25c | 0 | deb01a8913441e7fedb53c52a3a9fdff274ddbd2 | 320f3ac33a83b32f89559ef0c162b7eca428a278 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/233 | ||||
580235427 | MDExOlB1bGxSZXF1ZXN0NTgwMjM1NDI3 | 241 | open | 0 | Extract expand - work in progress | simonw 9599 | Refs #239. Still needs documentation and CLI implementation. | 2021-02-25T16:36:38Z | 2021-02-25T16:36:38Z | 0bb6c7a38994627a64e7b3375931528e96b8c222 | 1 | 8d641ab08ac449081e96f3e25bd6c0226870948a | 38e688fb8bcb58ae888b676fe3f7dd0529b4eecc | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/241 | ||||||
583407989 | MDExOlB1bGxSZXF1ZXN0NTgzNDA3OTg5 | 244 | closed | 0 | Typo in upsert example | j-e-d 387669 | Remove extra `[` | 2021-03-02T23:14:14Z | 2021-05-19T02:58:21Z | 2021-05-19T02:58:21Z | 2021-05-19T02:58:21Z | 328211eaca1247cd6b33a2c0a54642f87866d85b | 0 | 1899200fa5a43f638573ea2c483df62819ba53b1 | 09c3386f55f766b135b6a1c00295646c4ae29bec | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/244 | ||||
592289324 | MDExOlB1bGxSZXF1ZXN0NTkyMjg5MzI0 | 245 | closed | 0 | Correct some typos | dbready 1076745 | Noticed a typo in the docs and followed that up with a spellcheck. Had to bite my tongue at some of the British spellings. | 2021-03-13T04:26:56Z | 2021-05-19T02:58:04Z | 2021-05-19T02:58:04Z | 2021-05-19T02:58:04Z | 3e62ab62a88992d4bbb0fe83debec3bacd93ebf3 | 0 | 79de6b639f9d14818a5006af4f63e4e20c961a10 | 22f1d9e1999f70af4c5b0f880a820cd9eead3942 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/245 | ||||
593805804 | MDExOlB1bGxSZXF1ZXN0NTkzODA1ODA0 | 247 | closed | 0 | FTS quote functionality from datasette | DeNeutoy 16001974 | Addresses #246 - this is a bit of a kludge because it doesn't actually *validate* the FTS string, just makes sure that it will not crash when executed, but I figured that building a query parser is a bit out of the scope of sqlite-utils and if you actually want to use the query language, you probably need to parse that yourself. | 2021-03-16T11:17:34Z | 2021-08-18T18:43:12Z | 2021-08-18T18:43:12Z | 2021-08-18T18:43:11Z | 53fec0d8639d2a66e322d05e1fcc8f34caa57815 | 0 | af989af658e23be0077f226292594226103b063d | 1fe73c898b44695052f1a9ca832818d50cecf662 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/247 | ||||
614727036 | MDExOlB1bGxSZXF1ZXN0NjE0NzI3MDM2 | 254 | closed | 0 | Fix incorrect create-table cli description | robjwells 1935268 | The description for `create-table` was duplicated from `create-index`. | 2021-04-13T20:03:15Z | 2021-05-19T04:43:46Z | 2021-05-19T02:57:26Z | 2021-05-19T02:57:26Z | e7b2626291040b78b9a2dbc2982ba72691fb1a0f | 0 | cdeb7d7da77c6d1cd3554d08cb5659243cb3d55b | 22f1d9e1999f70af4c5b0f880a820cd9eead3942 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/254 | ||||
623755723 | MDExOlB1bGxSZXF1ZXN0NjIzNzU1NzIz | 258 | closed | 0 | Fixing insert from JSON containing strings with non-ascii characters … | dylan-wu 6586811 | …are escaped aps unicode for lists, tuples, dicts Fix of #257 | 2021-04-26T20:50:00Z | 2021-05-19T02:47:44Z | 2021-05-19T02:47:44Z | 2021-05-19T02:47:44Z | 6f4f9a3effeb16de0348d3cf136664f7531f498d | 0 | 27e7c1ae1913e2127361af4fc664c2061fb76627 | 22f1d9e1999f70af4c5b0f880a820cd9eead3942 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/258 | ||||
657373726 | MDExOlB1bGxSZXF1ZXN0NjU3MzczNzI2 | 262 | closed | 0 | Ability to add descending order indexes | simonw 9599 | Refs #260 | 2021-05-29T04:51:04Z | 2021-05-29T05:01:42Z | 2021-05-29T05:01:39Z | 2021-05-29T05:01:39Z | 51d01da30d45c1fbc1e587e6046a933529cf915e | 0 | 50a4fb722d29c3e53f7b148a41aeda901d02a264 | b2302875c97f723e02cc39136d0b20fd706369aa | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/262 | ||||
671014751 | MDExOlB1bGxSZXF1ZXN0NjcxMDE0NzUx | 273 | closed | 0 | sqlite-utils memory command for directly querying CSV/JSON data | simonw 9599 | Refs #272. Initial implementation only does CSV data, still needs: - [x] Implement `--save` - [x] Add `--dump` to the documentation - [x] Add `--attach` example to the documentation - [x] Replace `:memory:` in documentation | 2021-06-16T05:04:58Z | 2021-06-18T15:01:17Z | 2021-06-18T15:00:52Z | 2021-06-18T15:00:52Z | 42ec59d8ee3fcfb8ac1affb772aed43b6e2a7381 | 0 | df7a37bdb730bb863fa29758f6fb35f809fa0dd0 | 78aebb6479420217454747870737bc593a259abc | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/273 | ||||
672359609 | MDExOlB1bGxSZXF1ZXN0NjcyMzU5NjA5 | 277 | closed | 0 | add -h support closes #276 | mcint 601708 | This appears to be the [canonical solution](https://click.palletsprojects.com/en/7.x/documentation/#help-parameter-customization). | 2021-06-17T08:08:26Z | 2021-06-18T14:56:59Z | 2021-06-18T14:56:59Z | 2021-06-18T14:56:59Z | aa652b6afe43d2b40fabc7a513c3e68866e030a5 | 0 | abbd324a2178f09b19966ec36ab2f584d1824c59 | a19ce1a4d0048d389411cfe11a5dbe4c503720e1 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/277 | ||||
677554929 | MDExOlB1bGxSZXF1ZXN0Njc3NTU0OTI5 | 293 | closed | 0 | Test against Python 3.10-dev | simonw 9599 | 2021-06-25T01:40:39Z | 2021-10-13T21:49:33Z | 2021-10-13T21:49:33Z | 0f64d20b044ecb86d9e4e5843f9590006d2f39c2 | 0 | ae0f46a78958c0118e98c2ab18bd1b57a0478326 | 747be6057d09a4e5d9d726e29d5cf99b10c59dea | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/293 | ||||||
700944644 | MDExOlB1bGxSZXF1ZXN0NzAwOTQ0NjQ0 | 303 | closed | 0 | sqlite-utils convert command and db[table].convert(...) method | simonw 9599 | Refs #251, #302. - [x] Get recipes working - [x] Document recipes - [x] Implement `db[table].convert(...)` method - [x] Add tests for recipes that use the new Python method - [x] Implement `db[table].convert(..., multi=True)` mechanism - [x] Documentation for `db[table].convert(...)` - [x] Refactor `sqlite-utils convert` to use the new method | 2021-08-01T16:52:42Z | 2021-08-02T04:47:42Z | 2021-08-02T04:47:39Z | 2021-08-02T04:47:39Z | 5ec6686153e29ae10d4921a1ad4c841f192f20e2 | 0 | 4c3bf9730542f1e49cbf11a61dbdb7fd621453df | c7e8d72be9fe8fe0811f685a18eebc637662d41b | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/303 | ||||
707490789 | MDExOlB1bGxSZXF1ZXN0NzA3NDkwNzg5 | 312 | closed | 0 | Add reference page to documentation using Sphinx autodoc | simonw 9599 | Refs #311. | 2021-08-10T16:59:17Z | 2021-08-10T23:09:32Z | 2021-08-10T23:09:28Z | 2021-08-10T23:09:28Z | 6155da72c8939b5d9bdacb7853e5e8d1767ce1d5 | 0 | 43bc06481783c3cfcee70c0cb541a686e8894adb | ee469e3122d6f5973ec2584c1580d930daca2e7c | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/312 | ||||
719109709 | MDExOlB1bGxSZXF1ZXN0NzE5MTA5NzA5 | 321 | closed | 0 | Ability to insert file contents as text, in addition to blob | simonw 9599 | Refs #319. | 2021-08-24T22:37:18Z | 2021-08-24T23:31:17Z | 2021-08-24T23:31:13Z | 2021-08-24T23:31:13Z | 49a010c93d90bc68ce1c6fff7639927248912b54 | 0 | db2dd6d9f30b347f4ed22b07f59b5a615184fbfd | 9258f4bd8450c951900de998a7bf81ca9b45a014 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/321 | ||||
719998225 | MDExOlB1bGxSZXF1ZXN0NzE5OTk4MjI1 | 322 | closed | 0 | Add dict type to be mapped as TEXT in sqllite | minaeid90 2496189 | the library deal with Postgres type jsonb as dictionary, add dict type as a TEXT for mapping to sqlite | 2021-08-25T20:54:26Z | 2021-11-15T00:27:40Z | 2021-11-15T00:27:40Z | 2021-11-15T00:27:40Z | 271b894af52eb6437ae6cd84eba9867ad8dd43f6 | 0 | 69619f68c26478fdee479110e084fd22711013a3 | 77c240df56068341561e95e4a412cbfa24dc5bc7 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/322 | ||||
727012996 | MDExOlB1bGxSZXF1ZXN0NzI3MDEyOTk2 | 324 | closed | 0 | Use python-dateutil package instead of dateutils | meatcar 191622 | While working on updating `sqlite-utils` for NixOS/Nixpkgs, I came a cross the following: In 5ec6686153e29ae10d4921a1ad4c841f192f20e2, a new dependency was added on `dateutils` (https://pypi.org/project/dateutils/). I believe this is unintentional, and instead `python-dateutil` (https://pypi.org/project/python-dateutil/) was intended. My reasoning is: - `python-dateutil` is imported here in [recipes.py](https://github.com/simonw/sqlite-utils/blob/5ec6686153e29ae10d4921a1ad4c841f192f20e2/sqlite_utils/recipes.py#L1) - The `mypy` `type-python-dateutil` dependency in [setup.py](https://github.com/simonw/sqlite-utils/blob/5ec6686153e29ae10d4921a1ad4c841f192f20e2/setup.py#L36) - `python-dateutil` is a dependency of `dateutils` as seen in the output in [docs/tutorial.ipynb](https://github.com/simonw/sqlite-utils/blob/77c240df56068341561e95e4a412cbfa24dc5bc7/docs/tutorial.ipynb#L43) Seems like the trailing "s" seems to be the source of confusion 😅 I've swapped the dependencies out, hope this helps. | 2021-09-03T18:31:19Z | 2021-11-14T23:25:40Z | 2021-11-14T23:25:40Z | 2021-11-14T23:25:40Z | bc4c42d68879c710c851dba3c98deda96ca6caa8 | 0 | 275ac3b282947fa5df5d18de835d5d958a778e72 | 77c240df56068341561e95e4a412cbfa24dc5bc7 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/324 | ||||
729731441 | MDExOlB1bGxSZXF1ZXN0NzI5NzMxNDQx | 326 | closed | 0 | Test against 3.10-dev | simonw 9599 | This tests against the latest 3.10 RC, https://www.python.org/downloads/release/python-3100rc2/ | 2021-09-08T15:01:15Z | 2021-10-13T21:49:28Z | 2021-10-13T21:49:28Z | c563260408e1b802cbbc81ec7c1e398350a1ca3a | 0 | 078a08765d8aefa5ce376a03b2643d4ebe1aa57e | 77c240df56068341561e95e4a412cbfa24dc5bc7 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/326 | |||||
737050557 | PR_kwDOCGYnMM4r7n-9 | 327 | closed | 0 | Extract expand: Support JSON Arrays | phaer 101753 | Hi, I needed to extract data in JSON Arrays to normalize data imports. I've quickly hacked the following together based on #241 which refers to #239 where you, @simonw, wrote: > Could this handle lists of objects too? That would be pretty amazing - if the column has a [{...}, {...}] list in it could turn that into a many-to-many. They way this works in my work is that many-to-many relationships are created for anything that maps to an dictionary in a list, and many-to-one relations for everything else (assumed to be scalar values). Not sure what the best approach here would be? Are many-to-one relationships are at all useful here? What do you think about this approach? I could try to add it to the cli interface and documentation if wanted. Thanks for this awesome piece of software in any case! :sun_with_face: | 2021-09-19T10:34:30Z | 2022-12-29T09:05:36Z | 2022-12-29T09:05:36Z | f0105cde23452cb4c8a15fc6096154b15d9b7c5a | 0 | 2840c697aa9817462d864ed5f8a7696d749fe039 | 8d641ab08ac449081e96f3e25bd6c0226870948a | NONE | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/327 | |||||
757797315 | PR_kwDOCGYnMM4tKxHD | 330 | closed | 0 | Test against Python 3.10 | simonw 9599 | 2021-10-13T21:50:22Z | 2021-11-15T02:59:29Z | 2021-10-13T22:25:05Z | 2021-10-13T22:25:05Z | fda4dad23a0494890267fbe8baf179e2b56ee914 | 0 | fc3de90963b6b097826d36f6a24c46267659dcf2 | 718a8f61bcaed39c04d5d223104056213f8c8516 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/330 | |||||
768796296 | PR_kwDOCGYnMM4t0uaI | 333 | closed | 0 | Add functionality to read Parquet files. | Florents-Tselai 2118708 | I needed this for a project of mine, and I thought it'd be useful to have it in sqlite-utils (It's also mentioned in #248 ). The current implementation works (data is read & data types are inferred correctly. I've added a single straightforward test case, but @simonw please let me know if there are any non-obvious flags/combinations I should test too. | 2021-10-28T23:43:19Z | 2021-11-25T19:47:35Z | 2021-11-25T19:47:35Z | eda2b1f8d2670c6ca8512e3e7c0150866bd0bdc6 | 0 | 50ec2e49dee3b09a48a7aef55eceaa3f752a52e7 | fda4dad23a0494890267fbe8baf179e2b56ee914 | NONE | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/333 | |||||
774610166 | PR_kwDOCGYnMM4uK5z2 | 337 | closed | 0 | Default values for `--attach` and `--param` options | urbas 771193 | It seems that `click` 8.x uses `None` as the default value for `multiple=True` options. This change makes the code forward-compatible with `click` 8.x. See this build failure for more info: https://hydra.nixos.org/build/156926608 | 2021-11-05T21:57:53Z | 2021-11-05T22:33:03Z | 2021-11-05T22:33:02Z | eb8bf28da1794638a5693043cd5268f506a674d3 | 0 | 095fc64c5399d75d44d304571a21293d06d817f0 | fda4dad23a0494890267fbe8baf179e2b56ee914 | NONE | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/337 | |||||
791153878 | PR_kwDOCGYnMM4vKAzW | 347 | open | 0 | Test against pysqlite3 running SQLite 3.37 | simonw 9599 | Refs #346 and #344. | 2021-11-29T23:17:57Z | 2021-12-11T01:02:19Z | f70a61e58ae62e53af74ab48d742bdc335131fbd | 0 | 1a7ef2fe2064ace01d5535fb771f941296fb642a | 213a0ff177f23a35f3b235386366ff132eb879f1 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/347 | ||||||
815164865 | PR_kwDOCGYnMM4wlm3B | 361 | closed | 0 | --lines and --text and --convert and --import | simonw 9599 | Refs #356 Still TODO: - [x] Get `--lines` working, with tests - [x] Get `--text` working, with tests - [x] Get regular JSON import working with `--convert` with tests - [x] Get `--lines` working with `--convert` with tests - [x] Get `--text` working with `--convert` with tests - [x] Get `--csv` and `--tsv` import working with `--convert` with tests - [x] Get `--nl` working with `--convert` with tests - [x] Documentation for all of the above | 2022-01-06T01:49:44Z | 2022-01-06T06:37:03Z | 2022-01-06T06:24:54Z | 2022-01-06T06:24:54Z | 413f8ed754e38d7b190de888c85fe8438336cb11 | 0 | b7f0b88d49032a053f0de2dbba356ee1f3b949c0 | f3fd8613113d21d44238a6ec54b375f5aa72c4e0 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/361 | ||||
816927546 | PR_kwDOCGYnMM4wsVM6 | 367 | closed | 0 | Initial prototype of .analyze() methods | simonw 9599 | Refs #366 | 2022-01-08T21:35:12Z | 2022-01-10T19:31:08Z | 2022-01-10T19:31:08Z | 2ffcbed6787523649dd676985f3ea70a62944764 | 3.21 7558727 | 1 | 9848eaa61b43de0ddb74ff6d085bcb18f4640f91 | a8f9cc6f64f299830834428509940d448b82b4ed | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/367 | ||||
817257851 | PR_kwDOCGYnMM4wtl17 | 377 | closed | 0 | `sqlite-utils bulk` command | simonw 9599 | Refs #375 Still needs: - [x] Refactor `@insert_upsert_options` so that it doesn't duplicate `@import_options` - [x] Tests - [x] Documentation - [x] Try it against a really big file | 2022-01-10T05:34:24Z | 2022-01-11T02:10:57Z | 2022-01-11T02:10:54Z | 2022-01-11T02:10:54Z | 129141572f249ea290e2a075437e2ebaad215859 | 3.21 7558727 | 0 | f4ea0d32c0543373eefaa9b9f3911eb07549eecb | b6dad08a8389736b7e960cfe9bc719cfc21a98f5 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/377 | |||
821992886 | PR_kwDOCGYnMM4w_p22 | 385 | closed | 0 | Add new spatialite helper methods | eyeseast 25778 | Refs #79 This PR adds three new Spatialite-related methods to Database and Table: - `Database.init_spatialite` loads the Spatialite extension and initializes it - `Table.add_geometry_column` adds a geometry column - `Table.create_spatial_index` creates a spatial index Has tests and documentation. Feedback very welcome. | 2022-01-14T03:57:30Z | 2022-02-05T00:04:26Z | 2022-02-04T05:55:10Z | 2022-02-04T05:55:10Z | ee11274fcb1c00f32c95f2ef2924d5349538eb4d | 0 | af86b17acf2fa50048e38b96497636d49db89766 | 74586d3cb26fa3cc3412721985ecdc1864c2a31d | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/385 | ||||
853484980 | PR_kwDOCGYnMM4y3yW0 | 407 | closed | 0 | Add SpatiaLite helpers to CLI | eyeseast 25778 | Closes #398 This adds SpatiaLite helpers to the CLI. ```sh # init spatialite when creating a database sqlite-utils create database.db --enable-wal --init-spatialite # add geometry columns # needs a database, table, geometry column name, type, with optional SRID and not-null # this will throw an error if the table doesn't already exist sqlite-utils add-geometry-column database.db table-name geometry --srid 4326 --not-null # spatial index an existing table/column # this will throw an error it the table and column don't exist sqlite-utils create-spatial-index database.db table-name geometry ``` Docs and tests are included. | 2022-02-15T16:50:17Z | 2022-02-16T01:49:40Z | 2022-02-16T00:58:08Z | 2022-02-16T00:58:07Z | a692c56659c3563b26dcdc9e3534d63ecc26e180 | 0 | a974da591915e0548182bbbf01da34ecb9e537e6 | e7f040106b5f5a892ebd984f19b21c605e87c142 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/407 | ||||
862823026 | PR_kwDOCGYnMM4zbaJy | 410 | closed | 0 | Correct spelling mistakes (found with codespell) | EdwardBetts 3818 | 2022-02-24T20:44:18Z | 2022-03-06T08:48:29Z | 2022-03-01T21:05:29Z | 2022-03-01T21:05:29Z | b6c9dfce0ba27eb5fb6bc2221044798420f861c4 | 0 | a174069da6669b8914d4a08dded7fd750d52a316 | 7a098aa0c5e8beef6ccc55c866cf7792af5fcf43 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/410 | |||||
887534558 | PR_kwDOCGYnMM405rPe | 419 | closed | 0 | Ignore common generated files | eyeseast 25778 | Closes #418 This adds four files to `.gitignore`: .hypothesis/ Pipfile Pipfile.lock pyproject.toml Those are all generated in the course of development and testing. | 2022-03-23T18:06:22Z | 2022-03-24T21:01:44Z | 2022-03-24T21:01:44Z | 2022-03-24T21:01:44Z | 396f80fcc60da8dd844577114f7920830a2e5403 | 0 | 228f73615cf993dd3caf3c240682c00392832bb8 | 93fa79d30b1531bea281d0eb6b925c4e61bc1aa6 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/419 | ||||
925807233 | PR_kwDOCGYnMM43LrKB | 429 | closed | 0 | Depend on click-default-group-wheel | simonw 9599 | Trying to get this to work with Pyodide. Refs: https://github.com/simonw/click-default-group-wheel/issues/3 | 2022-05-02T18:03:10Z | 2022-05-02T18:52:42Z | 2022-05-02T18:05:00Z | 2022-05-02T18:05:00Z | ed6fd516082e8cc83b199798f62dd67728a6974f | 0 | 4a02dcf265702a4f11eed943bf8feaa502c590d5 | e3a14c33a033b0c2fc00f2470666caaf9027e446 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/429 | ||||
943686022 | PR_kwDOCGYnMM44P4GG | 437 | closed | 0 | docs to dogs | yurivish 114388 | Fixes a typo. | 2022-05-22T15:50:33Z | 2022-05-30T21:32:41Z | 2022-05-30T21:32:41Z | 2022-05-30T21:32:41Z | 9fedfc69d7239ac49900051e1c48ee9cdd470d9e | 0 | 9e540417821385939db0fdd2d0a859f85be377e6 | 59be60c471fd7a2c4be7f75e8911163e618ff5ca | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/437 | ||||
992299943 | PR_kwDOCGYnMM47JUun | 452 | closed | 0 | Add duplicate table feature | davidleejy 1690072 | This PR addresses a feature request raised in issue #449. Specifically this PR adds a functionality that lets users duplicate a table via: ```python table_new = db["my_table"].duplicate("new_table") ``` Test added in file `tests/test_duplicate.py`. Happy to make changes to meet maintainers' feedback, if any. | 2022-07-09T20:24:31Z | 2022-07-15T21:21:37Z | 2022-07-15T21:21:36Z | 2022-07-15T21:21:36Z | b366e68deb0780048a23610c279552f8529d4726 | 0 | eef350fe543c6301c61b257c5f708e0e16ed5a34 | 42440d6345c242ee39778045e29143fb550bd2c2 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/452 | ||||
1000800283 | PR_kwDOCGYnMM47pwAb | 455 | closed | 0 | in extract code, check equality with IS instead of = for nulls | fgregg 536941 | sqlite "IS" is equivalent to SQL "IS NOT DISTINCT FROM" closes #423 | 2022-07-19T13:40:25Z | 2022-08-27T14:45:03Z | 2022-08-27T14:45:03Z | 2022-08-27T14:45:03Z | c5f8a2eb1a81a18b52825cc649112f71fe419b12 | 0 | 1b35a92e3ede76f0f29f6f8dcd899f44b2abbb02 | 855bce8c3823718def13e0b8928c58bf857e41b2 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/455 | ||||
1009936222 | PR_kwDOCGYnMM48Mmde | 457 | closed | 0 | Link to installation instructions | simonw 9599 | Also testing https://docs.readthedocs.io/en/stable/pull-requests.html | 2022-07-27T17:38:36Z | 2022-08-27T03:55:52Z | 2022-07-27T17:57:50Z | 2022-07-27T17:57:50Z | 77ca051d4f5ddbd42fd6250749efac7ea85ea094 | 3.29 8355157 | 0 | 80b3907471f724aeecae75796663815c87731e77 | 9e6cceac1c0e086429e2d308b700e59cc53a1991 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/457 | |||
1015320511 | PR_kwDOCGYnMM48hI-_ | 460 | closed | 0 | Cross-link CLI to Python docs | simonw 9599 | Work in progress, partly to test the ReadTheDocs preview link action. Refs: - #426 <!-- readthedocs-preview readthedocs-preview start --> ---- :books: Documentation preview :books:: https://readthedocs-preview--460.org.readthedocs.build/en/460/ <!-- readthedocs-preview readthedocs-preview end --> | 2022-08-02T16:18:28Z | 2022-08-18T21:58:10Z | 2022-08-18T21:58:07Z | 2022-08-18T21:58:07Z | f4fb78fa95057fbc86c734020835a3155695297f | 0 | f21f4ccf7197e7a0ac8c2eb5086659fc3eb5bc05 | 1856002e3c0fcc9f09f72ab7d97ad8c75f6de7df | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/460 | ||||
1015591301 | PR_kwDOCGYnMM48iLGF | 462 | closed | 0 | Discord badge | simonw 9599 | Also testing fix for: - https://github.com/readthedocs/readthedocs-preview/issues/10 <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--462.org.readthedocs.build/en/462/ <!-- readthedocs-preview sqlite-utils end --> | 2022-08-02T20:56:04Z | 2022-08-02T21:15:57Z | 2022-08-02T21:15:52Z | 2022-08-02T21:15:52Z | 271433fdd18e436b0a527ab899cb6f6fa67f23d0 | 0 | 0a14a031385f2647be0b9d15d96c1d44d05c2296 | 98a28cbfe6cea67f6334b42b74f35b0ddd309561 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/462 | ||||
1022525059 | PR_kwDOCGYnMM488n6D | 463 | closed | 0 | Use Read the Docs action v1 | humitos 244656 | Read the Docs repository was renamed from `readthedocs/readthedocs-preview` to `readthedocs/actions/`. Now, the `preview` action is under `readthedocs/actions/preview` and is tagged as `v1` <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--463.org.readthedocs.build/en/463/ <!-- readthedocs-preview sqlite-utils end --> | 2022-08-10T10:31:47Z | 2022-08-18T08:30:14Z | 2022-08-17T23:11:16Z | 2022-08-17T23:11:16Z | 83e7339255e811c62e6db8498c483c44a84d0f28 | 0 | 364110b97bd1c6e0d2bc841730e5dc1a595e537d | 271433fdd18e436b0a527ab899cb6f6fa67f23d0 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/463 | ||||
1029360106 | PR_kwDOCGYnMM49Wsnq | 465 | closed | 0 | beanbag-docutils>=2.0 | simonw 9599 | Refs #464 | 2022-08-17T22:41:39Z | 2022-08-17T23:38:07Z | 2022-08-17T23:38:02Z | 2022-08-17T23:38:02Z | f8ffac8787e299a62c99ed1ce914cd5ace84ad94 | 0 | bb90d3326815a041512b40bf0cf53b3ace06cd67 | 45e24deffea042b5db7ab84cd1eb63b3ed9bb9da | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/465 | ||||
1029373779 | PR_kwDOCGYnMM49Wv9T | 466 | closed | 0 | Use Read the Docs action v1 (#463) | simonw 9599 | Read the Docs repository was renamed from `readthedocs/readthedocs-preview` to `readthedocs/actions/`. Now, the `preview` action is under `readthedocs/actions/preview` and is tagged as `v1` | 2022-08-17T23:11:50Z | 2022-08-17T23:11:54Z | 2022-08-17T23:11:54Z | 2022-08-17T23:11:54Z | bb90d3326815a041512b40bf0cf53b3ace06cd67 | 0 | 83e7339255e811c62e6db8498c483c44a84d0f28 | 72655adabc596a9eed43cc11c07177a390791068 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/466 | ||||
1034485141 | PR_kwDOCGYnMM49qP2V | 468 | closed | 0 | db[table].create(..., transform=True) and create-table --transform | simonw 9599 | Work in progress. Still needs documentation and tests (and to cover more cases of things that might have changed). Refs: - #467 <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--468.org.readthedocs.build/en/468/ <!-- readthedocs-preview sqlite-utils end --> | 2022-08-23T17:27:58Z | 2022-08-27T23:17:55Z | 2022-08-27T23:17:55Z | 2022-08-27T23:17:55Z | 104f37fa4d2e7e5999c1d829267b62c737f74d3e | 3.29 8355157 | 0 | 2f6a64f61d561df821d737719941c678dcb1a03c | c5f8a2eb1a81a18b52825cc649112f71fe419b12 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/468 | |||
1038565427 | PR_kwDOCGYnMM4950Az | 473 | closed | 0 | Support entrypoints for `--load-extension` | simonw 9599 | Refs #470 <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--473.org.readthedocs.build/en/473/ <!-- readthedocs-preview sqlite-utils end --> | 2022-08-27T05:53:59Z | 2022-08-27T05:55:52Z | 2022-08-27T05:55:47Z | 2022-08-27T05:55:47Z | 19dd077944429c1365b513d80cc71c605ae3bed3 | 0 | 72db599ae03fabe2e9f999999e258edc1a99ed59 | a46a5e3a9e03dcdd8c84a92e4a5dbfa02ba461fa | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/473 | ||||
1040691996 | PR_kwDOCGYnMM4-B7Mc | 480 | closed | 0 | search_sql add include_rank option | chapmanjacobd 7908073 | I haven't tested this yet but wanted to get a heads-up whether this kind of change would be useful or if I should just duplicate the function and tweak it within my code <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--480.org.readthedocs.build/en/480/ <!-- readthedocs-preview sqlite-utils end --> | 2022-08-30T09:10:29Z | 2022-08-31T03:40:35Z | 2022-08-31T03:40:35Z | 2022-08-31T03:40:35Z | ecf1d40112e52a8f4e509c39b98caae996b7bc36 | 0 | 3dbfca6fdd878ba381f83157fdae2042eeaed371 | 087753cd42c406f1e060c1822dcd9b5fda3d60f4 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/480 | ||||
1050417981 | PR_kwDOCGYnMM4-nBs9 | 486 | closed | 0 | progressbar for inserts/upserts of all fileformats, closes #485 | MischaU8 99098079 | <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--486.org.readthedocs.build/en/486/ <!-- readthedocs-preview sqlite-utils end --> | 2022-09-08T14:58:02Z | 2022-09-15T20:40:03Z | 2022-09-15T20:37:51Z | 2022-09-15T20:37:51Z | 0b315d3fa83c1584eaeec32f24912898621e437a | 0 | d5db749480aaf8518e611ff55da186cadf6c63bc | d9b9e075f07a20f1137cd2e34ed5d3f1a3db4ad8 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/486 | ||||
1082769953 | PR_kwDOCGYnMM5AicIh | 498 | closed | 0 | fix: enable-fts permanently save triggers | chapmanjacobd 7908073 | I was wondering why my all my databases were giving wild search results. Turns out create_trigger was not sticking! Running `sqlite-utils triggers x.db` shows `[]` after running `enable-fts` using the python api. Looking at the counts trigger it seems that is the right way to save triggers. triggers show up now <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--498.org.readthedocs.build/en/498/ <!-- readthedocs-preview sqlite-utils end --> | 2022-10-11T05:10:51Z | 2022-10-15T04:33:08Z | 2022-10-11T06:34:31Z | ab24d21e9c2aa9c514c3b65f05cfc0bafa7621c1 | 0 | 75577e595d9177177a48030a1c39573af010df51 | d792dad1cf5f16525da81b1e162fb71d469995f3 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/498 | |||||
1083804914 | PR_kwDOCGYnMM5AmYzy | 499 | open | 0 | feat: recreate fts triggers after table transform | chapmanjacobd 7908073 | https://github.com/simonw/sqlite-utils/pull/498 <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--499.org.readthedocs.build/en/499/ <!-- readthedocs-preview sqlite-utils end --> alternatively, `self.disable_fts()` | 2022-10-11T20:35:39Z | 2022-10-26T17:54:51Z | 861c992f97a97e1b13a5bbb850944b87438e197e | 0 | a25e83841f2703afb08aff4589cb559ae9060776 | d792dad1cf5f16525da81b1e162fb71d469995f3 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/499 | ||||||
1105985162 | PR_kwDOCGYnMM5B6_6K | 508 | closed | 0 | Allow surrogates in parameters | chapmanjacobd 7908073 | closes #507 https://dwheeler.com/essays/fixing-unix-linux-filenames.html <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--508.org.readthedocs.build/en/508/ <!-- readthedocs-preview sqlite-utils end --> | 2022-10-31T22:11:49Z | 2022-11-17T15:11:16Z | 2022-10-31T22:55:36Z | 3b551597240d9a6058b1c3c720073120db213678 | 0 | 43a8c4c91fc22fb6bea07846f144072b0d047f4e | 529110e7d8c4a6b1bbf5fb61f2e29d72aa95a611 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/508 | |||||
1136499802 | PR_kwDOCGYnMM5DvZxa | 515 | closed | 0 | upsert new rows with constraints, fixes #514 | cldellow 193185 | This fixes #514 by making the initial insert for upserts include all columns, so that new rows can be added to tables with non-pkey columns that have constraints. (aside: I'm not a python programmer. `pip`? `pipenv`? `venv`? These are mystical incantations to me. The process to set up this repo for local development and testing was _so easy_. Thank you for the excellent contributing documentation!) <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--515.org.readthedocs.build/en/515/ <!-- readthedocs-preview sqlite-utils end --> | 2022-11-26T16:15:21Z | 2023-05-08T21:27:11Z | 2023-05-08T21:27:10Z | c3713ef6944cbeacf36e462712cecac2176db692 | 0 | 32f8173a8fe830c224e39a0a514cd12e78de7028 | 965ca0d5f5bffe06cc02cd7741344d1ddddf9d56 | NONE | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/515 | |||||
1173049178 | PR_kwDOCGYnMM5F609a | 519 | closed | 0 | Fixes breaking DEFAULT values | rhoboro 13819005 | Fixes #509, Fixes #336 Thanks for the great library! I fixed a bug that `sqlite-utils transform` breaks DEFAULT values. All tests already present passed with no changes, and I added some tests for this PR. In #509 case, fixed here. ```shell $ sqlite3 test.db << EOF CREATE TABLE mytable ( col1 TEXT DEFAULT 'foo', col2 TEXT DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')) ) EOF $ sqlite3 test.db "SELECT sql FROM sqlite_master WHERE name = 'mytable';" CREATE TABLE mytable ( col1 TEXT DEFAULT 'foo', col2 TEXT DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')) ) $ sqlite3 test.db "INSERT INTO mytable DEFAULT VALUES; SELECT * FROM mytable;" foo|2022-12-21 01:15:39.669 $ sqlite-utils transform test.db mytable --rename col1 renamedcol1 $ sqlite3 test.db "SELECT sql FROM sqlite_master WHERE name = 'mytable';" CREATE TABLE "mytable" ( [renamedcol1] TEXT DEFAULT 'foo', [col2] TEXT DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')) # ← Non-String Value ) $ sqlite3 test.db "INSERT INTO mytable DEFAULT VALUES; SELECT * FROM mytable;" foo|2022-12-21 01:15:39.669 foo|2022-12-21 01:15:56.432 ``` And #336 case also fixed. Special values are described [here](https://www.sqlite.org/lang_createtable.html). > 3.2. The DEFAULT clause > ... A default value may also be one of the special case-independent keywords CURRENT_TIME, CURRENT_DATE or CURRENT_TIMESTAMP. ```shell $ echo 'create table bar (baz text, created_at timestamp default CURRENT_TIMESTAMP)' | sqlite3 foo.db $ sqlite3 foo.db SQLite version 3.39.5 2022-10-14 20:58:05 Enter ".help" for usage hints. sqlite> .schema bar CREATE TABLE bar (baz text, created_at timestamp default CURRENT_TIMESTAMP); sqlite> .exit $ sqlite-utils transform foo.db bar --column-order baz $ sqlite3 foo.db SQLite version 3.39.5 2022-10-14 20:58:05 Enter ".help" for usage hints. sqlite> .schema bar CREATE TABLE IF NOT EXISTS "bar" ( [baz] TEXT, [created_at] FLOAT DEFAULT CURRENT_TIMESTAMP ); sqlite> .exit $ sqlite… | 2022-12-21T01:27:52Z | 2023-05-08T21:13:37Z | 2023-05-08T21:13:37Z | 2023-05-08T21:13:37Z | 6500fed8b2085869b9714ce3a08c30f61dc829ad | 0 | 5e5c262fab69eb3c470afa57fc52d3d7d8beee7a | fc221f9b62ed8624b1d2098e564f525c84497969 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/519 | ||||
1234321667 | PR_kwDOCGYnMM5JkkED | 526 | closed | 0 | Fix repeated calls to `Table.convert()` | mcarpenter 167893 | Fixes #525. All tests pass. There's perhaps a better way to name lambdas? There could be a collision if a caller passes a function with name like `lambda_123456`. SQLite [documentation](https://www.sqlite.org/appfunc.html) is a little, ah, lite on function name specs. If there is a character that can be used in place of underscore in a SQLite function name that is not permitted in a Python function identifier then that could be a good way to prevent accidental collisions. (I tried dash, colon, dot, no joy). Otherwise, there is little chance of this happening and if it should happen the risk is mitigated by now throwing an exception in the case of a (name, arity) collision without `replace=True`. <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--526.org.readthedocs.build/en/526/ <!-- readthedocs-preview sqlite-utils end --> | 2023-02-09T00:14:49Z | 2023-05-08T21:56:05Z | 2023-05-08T21:53:58Z | 2023-05-08T21:53:58Z | 02f5c4d69d7b4baebde015c56e5bc62923f33314 | 0 | 486e0cc1cd67e98c22d1f125403144cdedfa3d58 | fc221f9b62ed8624b1d2098e564f525c84497969 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/526 | ||||
1235909998 | PR_kwDOCGYnMM5Jqn1u | 528 | closed | 0 | Enable `Table.convert()` on falsey values | mcarpenter 167893 | Fixes #527 <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--528.org.readthedocs.build/en/528/ <!-- readthedocs-preview sqlite-utils end --> | 2023-02-10T00:04:09Z | 2023-05-08T21:08:23Z | 2023-05-08T21:08:23Z | 279fb2c85c6b3fc7b593aaf4245bd3a038bff5f0 | 0 | a09df3844ab91b70cebb7b888fc07cb21dffd01c | fc221f9b62ed8624b1d2098e564f525c84497969 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/528 | |||||
1272169404 | PR_kwDOCGYnMM5L08O8 | 531 | closed | 0 | Add paths for homebrew on Apple silicon | eyeseast 25778 | This also passes in the extension path when specified in GIS methods. Wherever we know an extension path, we use `db.init_spatialite(find_spatialite() or load_extension)`. <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--531.org.readthedocs.build/en/531/ <!-- readthedocs-preview sqlite-utils end --> | 2023-03-11T22:27:52Z | 2023-04-09T01:49:44Z | 2023-04-09T01:49:43Z | 24f3eb082b98b8d676bab2eab4f763cd9b50fe96 | 0 | afdf6187716b19fce8692f6887a1d45c85477fee | c0251cc9271260de73b4227859a51fab9b4cb745 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/531 | |||||
1306498393 | PR_kwDOCGYnMM5N35VZ | 536 | closed | 0 | Add paths for homebrew on Apple silicon | eyeseast 25778 | Does what it says and nothing else. This is the same set of paths as Datasette uses. <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--536.org.readthedocs.build/en/536/ <!-- readthedocs-preview sqlite-utils end --> | 2023-04-08T13:34:21Z | 2023-04-13T01:44:43Z | 2023-04-13T01:44:43Z | 2023-04-13T01:44:43Z | 8f9a729e8aff972cb18de25b40f4113e26bbc758 | 0 | cea05dc5eab8d10fbd8943e615d2ab0dceff863c | c0251cc9271260de73b4227859a51fab9b4cb745 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/536 | ||||
1311438738 | PR_kwDOCGYnMM5OKveS | 537 | closed | 0 | Support self-referencing FKs in `Table.create` | numist 544011 | <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--537.org.readthedocs.build/en/537/ <!-- readthedocs-preview sqlite-utils end --> | 2023-04-12T20:26:58Z | 2023-05-08T22:45:33Z | 2023-05-08T21:10:01Z | 2023-05-08T21:10:01Z | 39ef137e6760d385dc48d03eccf9b89943636fc7 | 0 | a75abeb61b91a28650d3b9933e7ec80ad0d92529 | c0251cc9271260de73b4227859a51fab9b4cb745 | CONTRIBUTOR | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/537 | ||||
1358254580 | PR_kwDOCGYnMM5Q9VH0 | 546 | closed | 0 | Analyze tables options: --common-limit, --no-most, --no-least | simonw 9599 | Refs #544 - [x] Documentation for CLI options - [x] Documentation for new Python API parameters: `most_common: bool` and `least_common: bool` - [x] Tests for CLI - [x] Tests for Python API | 2023-05-21T15:54:39Z | 2023-05-21T16:19:30Z | 2023-05-21T16:19:30Z | 2023-05-21T16:19:30Z | d2a7b15b2b930fe384e1f1715fc4af23386f4935 | 0 | 2eca17d46eca2cff52c78553085ec64d9029c969 | e047cc32e9d5de7025d4d3c16554d4290f4bd3d1 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/546 | ||||
1358282799 | PR_kwDOCGYnMM5Q9cAv | 549 | closed | 0 | TUI powered by Trogon | simonw 9599 | Refs: - #545 <!-- readthedocs-preview sqlite-utils start --> ---- :books: Documentation preview :books:: https://sqlite-utils--549.org.readthedocs.build/en/549/ <!-- readthedocs-preview sqlite-utils end --> | 2023-05-21T17:55:42Z | 2023-05-21T18:42:00Z | 2023-05-21T18:41:56Z | 2023-05-21T18:41:56Z | 718b0cba9b32d97a41bcf9757c97fe1d058da81c | 0 | 948692a94b22852b3147abebac9d719b69320b57 | e8c5b042e49c627aefd620c8d4b1c84eb8677f73 | OWNER | sqlite-utils 140912432 | https://github.com/simonw/sqlite-utils/pull/549 |
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE [pull_requests] ( [id] INTEGER PRIMARY KEY, [node_id] TEXT, [number] INTEGER, [state] TEXT, [locked] INTEGER, [title] TEXT, [user] INTEGER REFERENCES [users]([id]), [body] TEXT, [created_at] TEXT, [updated_at] TEXT, [closed_at] TEXT, [merged_at] TEXT, [merge_commit_sha] TEXT, [assignee] INTEGER REFERENCES [users]([id]), [milestone] INTEGER REFERENCES [milestones]([id]), [draft] INTEGER, [head] TEXT, [base] TEXT, [author_association] TEXT, [repo] INTEGER REFERENCES [repos]([id]), [url] TEXT, [merged_by] INTEGER REFERENCES [users]([id]) , [auto_merge] TEXT); CREATE INDEX [idx_pull_requests_merged_by] ON [pull_requests] ([merged_by]); CREATE INDEX [idx_pull_requests_repo] ON [pull_requests] ([repo]); CREATE INDEX [idx_pull_requests_milestone] ON [pull_requests] ([milestone]); CREATE INDEX [idx_pull_requests_assignee] ON [pull_requests] ([assignee]); CREATE INDEX [idx_pull_requests_user] ON [pull_requests] ([user]);