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 1040691996,PR_kwDOCGYnMM4-B7Mc,480,closed,0,search_sql add include_rank option,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 ---- :books: Documentation preview :books:: https://sqlite-utils--480.org.readthedocs.build/en/480/ ",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,140912432,https://github.com/simonw/sqlite-utils/pull/480,, 1445438054,PR_kwDOCGYnMM5WJ6Jm,573,closed,0,feat: Implement a prepare_connection plugin hook,15178711,"Just like the [Datasette prepare_connection hook](https://docs.datasette.io/en/stable/plugin_hooks.html#prepare-connection-conn-database-datasette), this PR adds a similar hook for the `sqlite-utils` plugin system. The sole argument is `conn`, since I don't believe a `database` or `datasette` argument would be relevant here. I want to do this so I can release `sqlite-utils` plugins for my [SQLite extensions](https://github.com/asg017/sqlite-ecosystem), similar to the Datasette plugins I've release for them. An example plugin: https://gist.github.com/asg017/d7cdf0d56e2be87efda28cebee27fa3c ```bash $ sqlite-utils install https://gist.github.com/asg017/d7cdf0d56e2be87efda28cebee27fa3c/archive/5f5ad549a40860787629c69ca120a08c32519e99.zip $ sqlite-utils memory 'select hello(""alex"") as response' [{""response"": ""Hello, alex!""}] ``` Refs: - #574 ---- :books: Documentation preview :books:: https://sqlite-utils--573.org.readthedocs.build/en/573/ ",2023-07-22T22:48:44Z,2023-07-22T22:59:09Z,2023-07-22T22:59:09Z,2023-07-22T22:59:09Z,3f80a026983d3e634f05a46f2a6da162b5139dd9,,,0,faf398fe075f60929337d3cd0f12309fc4229a3c,091c63cfbf7b40e99e2017a3c37619c7689cc447,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/573,, 583407989,MDExOlB1bGxSZXF1ZXN0NTgzNDA3OTg5,244,closed,0,Typo in upsert example,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,140912432,https://github.com/simonw/sqlite-utils/pull/244,, 346264926,MDExOlB1bGxSZXF1ZXN0MzQ2MjY0OTI2,67,closed,0,Run tests against 3.5 too,9599,,2019-11-27T14:20:35Z,2019-12-31T01:29:44Z,2019-12-31T01:29:43Z,,88375b0bc055067b996584f06ed85a9a90c5aa1a,,,0,4c6e5a4486e0e17555774eb3279142234a8b4abc,0a0cec3cf27861455e8cd1c4d84937825a18bb30,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/67,, 205770996,MDExOlB1bGxSZXF1ZXN0MjA1NzcwOTk2,1,closed,0,Make .indexes compatible with older SQLite versions,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,140912432,https://github.com/simonw/sqlite-utils/pull/1,, 492257405,MDExOlB1bGxSZXF1ZXN0NDkyMjU3NDA1,174,closed,0,"Much, much faster extract() implementation",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,140912432,https://github.com/simonw/sqlite-utils/pull/174,, 308292447,MDExOlB1bGxSZXF1ZXN0MzA4MjkyNDQ3,55,closed,0,Ability to introspect and run queries against views,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,140912432,https://github.com/simonw/sqlite-utils/pull/55,, 293117183,MDExOlB1bGxSZXF1ZXN0MjkzMTE3MTgz,34,closed,0,sqlite-utils index-foreign-keys / db.index_foreign_keys(),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,140912432,https://github.com/simonw/sqlite-utils/pull/34,, 1015320511,PR_kwDOCGYnMM48hI-_,460,closed,0,Cross-link CLI to Python docs,9599,"Work in progress, partly to test the ReadTheDocs preview link action. Refs: - #426 ---- :books: Documentation preview :books:: https://readthedocs-preview--460.org.readthedocs.build/en/460/ ",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,140912432,https://github.com/simonw/sqlite-utils/pull/460,, 1479795255,PR_kwDOCGYnMM5YM-I3,584,closed,0,.transform() instead of modifying sqlite_master for add_foreign_keys,9599,"Refs: - #577 ---- :books: Documentation preview :books:: https://sqlite-utils--584.org.readthedocs.build/en/584/ ",2023-08-17T23:32:45Z,2023-08-18T00:48:13Z,2023-08-18T00:48:08Z,2023-08-18T00:48:08Z,509857ee8724f73760f3631b69c26f9047381187,,,0,291505084e652972ad806383250757d41d596d38,1dc6b5aa644a92d3654f7068110ed7930989ce71,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/584,, 593805804,MDExOlB1bGxSZXF1ZXN0NTkzODA1ODA0,247,closed,0,FTS quote functionality from datasette,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,140912432,https://github.com/simonw/sqlite-utils/pull/247,, 791153878,PR_kwDOCGYnMM4vKAzW,347,open,0,Test against pysqlite3 running SQLite 3.37,9599,Refs #346 and #344.,2021-11-29T23:17:57Z,2021-12-11T01:02:19Z,,,f70a61e58ae62e53af74ab48d742bdc335131fbd,,,0,1a7ef2fe2064ace01d5535fb771f941296fb642a,213a0ff177f23a35f3b235386366ff132eb879f1,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/347,, 395258687,MDExOlB1bGxSZXF1ZXN0Mzk1MjU4Njg3,96,closed,0,Add type conversion for Panda's Timestamp,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,140912432,https://github.com/simonw/sqlite-utils/pull/96,, 592289324,MDExOlB1bGxSZXF1ZXN0NTkyMjg5MzI0,245,closed,0,Correct some typos,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,140912432,https://github.com/simonw/sqlite-utils/pull/245,, 614727036,MDExOlB1bGxSZXF1ZXN0NjE0NzI3MDM2,254,closed,0,Fix incorrect create-table cli description,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,140912432,https://github.com/simonw/sqlite-utils/pull/254,, 623755723,MDExOlB1bGxSZXF1ZXN0NjIzNzU1NzIz,258,closed,0,Fixing insert from JSON containing strings with non-ascii characters …,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,140912432,https://github.com/simonw/sqlite-utils/pull/258,, 1022525059,PR_kwDOCGYnMM488n6D,463,closed,0,Use Read the Docs action v1,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` ---- :books: Documentation preview :books:: https://sqlite-utils--463.org.readthedocs.build/en/463/ ",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,140912432,https://github.com/simonw/sqlite-utils/pull/463,, 1406821147,PR_kwDOCGYnMM5T2mMb,560,closed,0,Use sqlean if available in environment,9599,"Refs: - #559 ---- :books: Documentation preview :books:: https://sqlite-utils--560.org.readthedocs.build/en/560/ ",2023-06-25T19:48:48Z,2023-06-26T08:21:00Z,2023-06-25T23:25:51Z,2023-06-25T23:25:51Z,f5c63088e1454811ce8361208b72297408eb5237,,,0,5e7d27e5df024ce1f45e3a850c4e0f65e765cccd,2747257a3334d55e890b40ec58fada57ae8cfbfd,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/560,, 573147168,MDExOlB1bGxSZXF1ZXN0NTczMTQ3MTY4,233,closed,0,"Run tests against Ubuntu, macOS and Windows",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,140912432,https://github.com/simonw/sqlite-utils/pull/233,, 1504920193,PR_kwDOCGYnMM5Zs0KB,591,closed,0,Test against Python 3.12 preview,9599,"https://dev.to/hugovk/help-test-python-312-beta-1508/ ---- :books: Documentation preview :books:: https://sqlite-utils--591.org.readthedocs.build/en/591/ ",2023-09-06T16:10:00Z,2023-11-04T00:58:03Z,2023-11-04T00:58:02Z,,ac0db3c705355178bd5a337b8dd74df141b12c7a,,,0,1f14df1de4a214b12abfba6edd61a4bfa0b8473e,347fdc865e91b8d3410f49a5c9d5b499fbb594c1,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/591,, 483175509,MDExOlB1bGxSZXF1ZXN0NDgzMTc1NTA5,158,closed,0,Fix accidental mega long line in docs,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,140912432,https://github.com/simonw/sqlite-utils/pull/158,, 560204306,MDExOlB1bGxSZXF1ZXN0NTYwMjA0MzA2,224,closed,0,Add fts offset docs.,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,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,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': '<, 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': '<, 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': '<, name:Apple Watch, manufacturer:Apple Inc., model:Watch, hardware:Watch3,4, software:6.2.6>', 'unit': 'km', 'creationDate': '2020-10-14 05:54:12 +0100', 'startDate': '2020-07-15 16:40:50 +0100', 'endDate': '2020-07-15 16:42:49 +0100', 'value': '0.952092', 'metadata_HKMetadataKeySyncVersion': '1', 'metadata_HKMetadataKeySyncIdentifier': '3:674DBCDB-3FE8-40D1-9FC1-E54A2B413805:616520450.99823:616520569.99360:119'}, {'sourceName': 'AppleÂ\xa0Watch van Frans', 'sourceVersion': '6.2.6', 'device': '<, name:Apple Watch, manufacturer:Apple Inc., model:Watch, hardware:Watch3,4, software:6.2.6>', 'unit': 'km', 'creationDate': '2020-10-14 05:54:12 +0100', 'startDate': '2020-07-15 16:42:49 +0100', 'endDate': '2020-07-15 16:44:51 +0100', 'value': '0.848983', 'metadata_HKMetadataKeySyncVersion': '1', 'metadata_HKMetadataKeySyncIdentifier': '3:674DBCDB-3FE8-40D1-9FC1-E54A2B413805:616520569.99360:616520691.98826:119'}, {'sourceName': 'AppleÂ\xa0Watch van Frans', 'sourceVersion': '6.2.6', 'device': '<, name:Apple Watch, manufacturer:Apple Inc., model:Watch, hardware:Watch3,4, software:6.2.6>', 'unit': 'km', 'creationDate': '2020-10-14 05:54:12 +0100', 'startDate': '2020-07-15 16:44:51 +0100', 'endDate': '2020-07-15 16:46:50 +0100', 'value': '0.834403', 'metadata_HKMetadataKeySyncVersion': '1', 'metadata_HKMetadataKeySyncIdentifier': '3:674DBCDB-3FE8-40D1-9FC1-E54A2B413805:616520691.98826:616520810.98305:119'}] def all_columns_old(): all_columns = [col for col in chunk[0]] all_columns += [column for record in chunk for column in record if column not in all_columns] return all_columns def all_columns_new(): all_columns = [col for col in chunk[0]] for record in chunk: all_columns += [column for column in record if column not in all_columns] return all_columns if __name__ == '__main__': from pprint import pprint print('problem: ') pprint(all_columns_old()) print('\nfix: ') pprint(all_columns_new()) ``` ",2021-01-29T20:16:07Z,2021-02-14T21:04:13Z,2021-02-14T21:04:13Z,,1cba965a1ddc2bd77db3bc3912aa7e8467e2fa2f,,,0,929ea7551135df0cc2ac9d67f4fbbecf701a11f6,36dc7e3909a44878681c266b90f9be76ac749f2d,NONE,140912432,https://github.com/simonw/sqlite-utils/pull/225,, 580235427,MDExOlB1bGxSZXF1ZXN0NTgwMjM1NDI3,241,open,0,Extract expand - work in progress,9599,Refs #239. Still needs documentation and CLI implementation.,2021-02-25T16:36:38Z,2021-02-25T16:36:38Z,,,0bb6c7a38994627a64e7b3375931528e96b8c222,,,1,8d641ab08ac449081e96f3e25bd6c0226870948a,38e688fb8bcb58ae888b676fe3f7dd0529b4eecc,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/241,, 481616704,MDExOlB1bGxSZXF1ZXN0NDgxNjE2NzA0,151,closed,0,Tracer mechanism for seeing underlying SQL,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,140912432,https://github.com/simonw/sqlite-utils/pull/151,, 313383317,MDExOlB1bGxSZXF1ZXN0MzEzMzgzMzE3,60,closed,0,db.triggers and table.triggers introspection,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,140912432,https://github.com/simonw/sqlite-utils/pull/60,, 992299943,PR_kwDOCGYnMM47JUun,452,closed,0,Add duplicate table feature,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,140912432,https://github.com/simonw/sqlite-utils/pull/452,, 249680944,MDExOlB1bGxSZXF1ZXN0MjQ5NjgwOTQ0,9,closed,0,:pencil: Updates my_database.py to my_database.db,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,140912432,https://github.com/simonw/sqlite-utils/pull/9,, 1029360106,PR_kwDOCGYnMM49Wsnq,465,closed,0,beanbag-docutils>=2.0,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,140912432,https://github.com/simonw/sqlite-utils/pull/465,, 1105985162,PR_kwDOCGYnMM5B6_6K,508,closed,0,Allow surrogates in parameters,7908073,"closes #507 https://dwheeler.com/essays/fixing-unix-linux-filenames.html ---- :books: Documentation preview :books:: https://sqlite-utils--508.org.readthedocs.build/en/508/ ",2022-10-31T22:11:49Z,2022-11-17T15:11:16Z,2022-10-31T22:55:36Z,,3b551597240d9a6058b1c3c720073120db213678,,,0,43a8c4c91fc22fb6bea07846f144072b0d047f4e,529110e7d8c4a6b1bbf5fb61f2e29d72aa95a611,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/508,, 359822773,MDExOlB1bGxSZXF1ZXN0MzU5ODIyNzcz,75,closed,0,Explicitly include tests and docs in sdist,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,140912432,https://github.com/simonw/sqlite-utils/pull/75,, 369348084,MDExOlB1bGxSZXF1ZXN0MzY5MzQ4MDg0,78,closed,0,"New conversions= feature, refs #77",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,140912432,https://github.com/simonw/sqlite-utils/pull/78,, 943686022,PR_kwDOCGYnMM44P4GG,437,closed,0,docs to dogs,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,140912432,https://github.com/simonw/sqlite-utils/pull/437,, 515014883,MDExOlB1bGxSZXF1ZXN0NTE1MDE0ODgz,195,closed,0,table.search() improvements plus sqlite-utils search command,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,140912432,https://github.com/simonw/sqlite-utils/pull/195,, 1507097949,PR_kwDOCGYnMM5Z1H1d,593,closed,0,".transform() now preserves rowid values, refs #592",9599,"Refs: - #592 - [x] Tests against weird shaped tables I need to test that this works against: - `rowid` tables - Tables that have a column called `rowid` even though they are not rowid tables ---- :books: Documentation preview :books:: https://sqlite-utils--593.org.readthedocs.build/en/593/ ",2023-09-08T01:02:28Z,2023-09-10T17:44:59Z,2023-09-09T00:45:30Z,2023-09-09T00:45:30Z,1c6ea54338e24fcebcee4e2f9c170ee300a5d946,,,0,b86374f705d1f4143a51634b30289cb48add0ea2,5d123f031fc4fadc98f508e0ef6b7b6671e86155,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/593,, 529090560,MDExOlB1bGxSZXF1ZXN0NTI5MDkwNTYw,204,closed,0,use jsonify_if_need for sql updates,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,140912432,https://github.com/simonw/sqlite-utils/pull/204,, 1535767490,PR_kwDOCGYnMM5bifPC,596,closed,0,"Fixes mapping for time fields related to mysql, closes #522",4420927,"Adds `COLUMN_TYPE_MAPPING` for `TIME` fields that are mapped as `datetime.timedelta` for MySQL and json represantation for `datetime.timedelta` in order to fix #522 ---- :books: Documentation preview :books:: https://sqlite-utils--596.org.readthedocs.build/en/596/ ",2023-09-29T13:41:48Z,2023-11-04T00:49:50Z,2023-11-04T00:49:50Z,2023-11-04T00:49:50Z,347fdc865e91b8d3410f49a5c9d5b499fbb594c1,,,0,ab12125b3f7d0ef327b08d95f27c6c4cec6fdfb3,622c3a5a7dd53a09c029e2af40c2643fe7579340,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/596,, 1542299634,PR_kwDOCGYnMM5b7Z_y,598,closed,0,Fixed issue #433 - CLI eats cursor,62745,"The issue is that underlying iterator is not fully consumed within the body of the `with file_progress()` block. Instead, that block creates generator expressions like `docs = (dict(zip(headers, row)) for row in reader)` These iterables are consumed later, outside the `with file_progress()` block, which consumes the underlying iterator, and in turn updates the progress bar. This means that the `ProgressBar.__exit__` method gets called before the last time the `ProgressBar.update` method gets called. The result is that the code to make the cursor invisible (inside the `update()` method) is called after the cleanup code to make it visible (in the `__exit__` method). The fix is to move consumption of the `docs` iterators within the progress bar block. ( (An additional fix, to make ProgressBar more robust against this kind of misuse, would to make it refusing to update after its `__exit__` method had been called, just like files cannot be `read()` after they are closed. That requires a in the click library). Note that Github diff obscures the simplicity of this diff, it's just indenting a block of code. ---- :books: Documentation preview :books:: https://sqlite-utils--598.org.readthedocs.build/en/598/ ",2023-10-04T18:06:58Z,2023-11-04T00:46:55Z,2023-11-04T00:40:30Z,2023-11-04T00:40:30Z,37273d7f63f08872aa1c90c4233a0580e384ac19,,,0,76113d1cb1387811d556fb7a32e0628492c34aea,622c3a5a7dd53a09c029e2af40c2643fe7579340,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/598,, 1586779743,PR_kwDOCGYnMM5elFZf,600,closed,0,Add spatialite arm64 linux path,37802088,"According to both [Debian](https://packages.debian.org/bookworm/arm64/libsqlite3-mod-spatialite/filelist) and [Ubuntu](https://packages.ubuntu.com/mantic/arm64/libsqlite3-mod-spatialite/filelist), the correct “target triple” for arm64 is `aarch64-linux-gnu`, so we should be looking in `/usr/lib/aarch64-linux-gnu` for `mod_spatialite.so`. I can confirm that on both of my Debian arm64 SBCs, `libsqlite3-mod-spatialite` installs to that path. ``` $ ls -l /usr/lib/*/*spatial* lrwxrwxrwx 1 root root 23 Dec 1 2022 /usr/lib/aarch64-linux-gnu/mod_spatialite.so -> mod_spatialite.so.7.1.0 lrwxrwxrwx 1 root root 23 Dec 1 2022 /usr/lib/aarch64-linux-gnu/mod_spatialite.so.7 -> mod_spatialite.so.7.1.0 -rw-r--r-- 1 root root 7348584 Dec 1 2022 /usr/lib/aarch64-linux-gnu/mod_spatialite.so.7.1.0 ``` This is a set of before and after snippets of pytest’s output for this PR. ### Before ``` $ pytest tests/test_get.py ...... [ 73%] tests/test_gis.py ssssssssssss [ 75%] tests/test_hypothesis.py .... [ 75%] ``` ### After ``` $ pytest tests/test_get.py ...... [ 73%] tests/test_gis.py ............ [ 75%] tests/test_hypothesis.py .... [ 75%] ``` Issue: #599 ---- :books: Documentation preview :books:: https://sqlite-utils--600.org.readthedocs.build/en/600/ ",2023-11-03T22:23:26Z,2023-11-04T00:34:33Z,2023-11-04T00:31:49Z,2023-11-04T00:31:49Z,b92ea4793ce4dcb73cf762aae634ab72f65ec50f,,,0,b1a60766a4150268557c4445297087a3f076be01,622c3a5a7dd53a09c029e2af40c2643fe7579340,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/600,, 297459797,MDExOlB1bGxSZXF1ZXN0Mjk3NDU5Nzk3,40,closed,0,.get() method plus support for compound primary keys,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,140912432,https://github.com/simonw/sqlite-utils/pull/40,, 483027587,MDExOlB1bGxSZXF1ZXN0NDgzMDI3NTg3,156,closed,0,Typos in tests,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,140912432,https://github.com/simonw/sqlite-utils/pull/156,, 757797315,PR_kwDOCGYnMM4tKxHD,330,closed,0,Test against Python 3.10,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,140912432,https://github.com/simonw/sqlite-utils/pull/330,, 1029373779,PR_kwDOCGYnMM49Wv9T,466,closed,0,Use Read the Docs action v1 (#463),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,140912432,https://github.com/simonw/sqlite-utils/pull/466,, 821992886,PR_kwDOCGYnMM4w_p22,385,closed,0,Add new spatialite helper methods,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,140912432,https://github.com/simonw/sqlite-utils/pull/385,, 677554929,MDExOlB1bGxSZXF1ZXN0Njc3NTU0OTI5,293,closed,0,Test against Python 3.10-dev,9599,,2021-06-25T01:40:39Z,2021-10-13T21:49:33Z,2021-10-13T21:49:33Z,,0f64d20b044ecb86d9e4e5843f9590006d2f39c2,,,0,ae0f46a78958c0118e98c2ab18bd1b57a0478326,747be6057d09a4e5d9d726e29d5cf99b10c59dea,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/293,, 719998225,MDExOlB1bGxSZXF1ZXN0NzE5OTk4MjI1,322,closed,0,Add dict type to be mapped as TEXT in sqllite,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,140912432,https://github.com/simonw/sqlite-utils/pull/322,, 727012996,MDExOlB1bGxSZXF1ZXN0NzI3MDEyOTk2,324,closed,0,Use python-dateutil package instead of dateutils,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,140912432,https://github.com/simonw/sqlite-utils/pull/324,, 729731441,MDExOlB1bGxSZXF1ZXN0NzI5NzMxNDQx,326,closed,0,Test against 3.10-dev,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,140912432,https://github.com/simonw/sqlite-utils/pull/326,, 671014751,MDExOlB1bGxSZXF1ZXN0NjcxMDE0NzUx,273,closed,0,sqlite-utils memory command for directly querying CSV/JSON data,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,140912432,https://github.com/simonw/sqlite-utils/pull/273,, 862823026,PR_kwDOCGYnMM4zbaJy,410,closed,0,Correct spelling mistakes (found with codespell),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,140912432,https://github.com/simonw/sqlite-utils/pull/410,, 499603359,MDExOlB1bGxSZXF1ZXN0NDk5NjAzMzU5,184,closed,0,Test against Python 3.9,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,140912432,https://github.com/simonw/sqlite-utils/pull/184,, 1000800283,PR_kwDOCGYnMM47pwAb,455,closed,0,"in extract code, check equality with IS instead of = for nulls",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,140912432,https://github.com/simonw/sqlite-utils/pull/455,, 292879204,MDExOlB1bGxSZXF1ZXN0MjkyODc5MjA0,32,closed,0,db.add_foreign_keys() method,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,140912432,https://github.com/simonw/sqlite-utils/pull/32,, 737050557,PR_kwDOCGYnMM4r7n-9,327,closed,0,Extract expand: Support JSON Arrays,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,140912432,https://github.com/simonw/sqlite-utils/pull/327,, 337853394,MDExOlB1bGxSZXF1ZXN0MzM3ODUzMzk0,65,closed,0,Release 1.12.1,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,140912432,https://github.com/simonw/sqlite-utils/pull/65,, 719109709,MDExOlB1bGxSZXF1ZXN0NzE5MTA5NzA5,321,closed,0,"Ability to insert file contents as text, in addition to blob",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,140912432,https://github.com/simonw/sqlite-utils/pull/321,, 1608050242,PR_kwDOCGYnMM5f2OZC,604,closed,0,Add more STRICT table support,16437338,"- https://github.com/simonw/sqlite-utils/issues/344#issuecomment-982014776 Make `table.transform()` preserve STRICT mode. ---- :books: Documentation preview :books:: https://sqlite-utils--604.org.readthedocs.build/en/604/ ",2023-11-19T19:38:53Z,2023-12-08T05:17:20Z,2023-12-08T05:05:27Z,2023-12-08T05:05:27Z,1500c19bd0f31b2e7f28a5ec2d7bfa133a2e4d4c,,,0,61c6e26cf922c70b65b161473723ff9d869a04a5,9286c1ba432e890b1bb4b2a1f847b15364c1fa18,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/604,, 887534558,PR_kwDOCGYnMM405rPe,419,closed,0,Ignore common generated files,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,140912432,https://github.com/simonw/sqlite-utils/pull/419,, 493162767,MDExOlB1bGxSZXF1ZXN0NDkzMTYyNzY3,178,closed,0,Update README.md,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,140912432,https://github.com/simonw/sqlite-utils/pull/178,, 1136499802,PR_kwDOCGYnMM5DvZxa,515,closed,0,"upsert new rows with constraints, fixes #514",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!) ---- :books: Documentation preview :books:: https://sqlite-utils--515.org.readthedocs.build/en/515/ ",2022-11-26T16:15:21Z,2023-05-08T21:27:11Z,2023-05-08T21:27:10Z,,c3713ef6944cbeacf36e462712cecac2176db692,,,0,32f8173a8fe830c224e39a0a514cd12e78de7028,965ca0d5f5bffe06cc02cd7741344d1ddddf9d56,NONE,140912432,https://github.com/simonw/sqlite-utils/pull/515,, 490703173,MDExOlB1bGxSZXF1ZXN0NDkwNzAzMTcz,166,closed,0,Keyword only arguments for transform(),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,140912432,https://github.com/simonw/sqlite-utils/pull/166,, 1015591301,PR_kwDOCGYnMM48iLGF,462,closed,0,Discord badge,9599,"Also testing fix for: - https://github.com/readthedocs/readthedocs-preview/issues/10 ---- :books: Documentation preview :books:: https://sqlite-utils--462.org.readthedocs.build/en/462/ ",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,140912432,https://github.com/simonw/sqlite-utils/pull/462,, 247861419,MDExOlB1bGxSZXF1ZXN0MjQ3ODYxNDE5,5,closed,0,Run Travis tests against Python 3.8-dev,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,140912432,https://github.com/simonw/sqlite-utils/pull/5,, 301824097,MDExOlB1bGxSZXF1ZXN0MzAxODI0MDk3,51,closed,0,"Fix for too many SQL variables, closes #50",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,140912432,https://github.com/simonw/sqlite-utils/pull/51,, 1009936222,PR_kwDOCGYnMM48Mmde,457,closed,0,Link to installation instructions,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,,8355157,0,80b3907471f724aeecae75796663815c87731e77,9e6cceac1c0e086429e2d308b700e59cc53a1991,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/457,, 337847573,MDExOlB1bGxSZXF1ZXN0MzM3ODQ3NTcz,64,closed,0,test_insert_upsert_all_empty_list,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,140912432,https://github.com/simonw/sqlite-utils/pull/64,, 672359609,MDExOlB1bGxSZXF1ZXN0NjcyMzU5NjA5,277,closed,0,add -h support closes #276,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,140912432,https://github.com/simonw/sqlite-utils/pull/277,, 1038565427,PR_kwDOCGYnMM4950Az,473,closed,0,Support entrypoints for `--load-extension`,9599,"Refs #470 ---- :books: Documentation preview :books:: https://sqlite-utils--473.org.readthedocs.build/en/473/ ",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,140912432,https://github.com/simonw/sqlite-utils/pull/473,, 297412464,MDExOlB1bGxSZXF1ZXN0Mjk3NDEyNDY0,38,closed,0,table.update() method,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,140912432,https://github.com/simonw/sqlite-utils/pull/38,, 816927546,PR_kwDOCGYnMM4wsVM6,367,closed,0,Initial prototype of .analyze() methods,9599,Refs #366,2022-01-08T21:35:12Z,2022-01-10T19:31:08Z,2022-01-10T19:31:08Z,,2ffcbed6787523649dd676985f3ea70a62944764,,7558727,1,9848eaa61b43de0ddb74ff6d085bcb18f4640f91,a8f9cc6f64f299830834428509940d448b82b4ed,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/367,, 657373726,MDExOlB1bGxSZXF1ZXN0NjU3MzczNzI2,262,closed,0,Ability to add descending order indexes,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,140912432,https://github.com/simonw/sqlite-utils/pull/262,, 817257851,PR_kwDOCGYnMM4wtl17,377,closed,0,`sqlite-utils bulk` command,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,,7558727,0,f4ea0d32c0543373eefaa9b9f3911eb07549eecb,b6dad08a8389736b7e960cfe9bc719cfc21a98f5,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/377,, 1272169404,PR_kwDOCGYnMM5L08O8,531,closed,0,Add paths for homebrew on Apple silicon,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)`. ---- :books: Documentation preview :books:: https://sqlite-utils--531.org.readthedocs.build/en/531/ ",2023-03-11T22:27:52Z,2023-04-09T01:49:44Z,2023-04-09T01:49:43Z,,24f3eb082b98b8d676bab2eab4f763cd9b50fe96,,,0,afdf6187716b19fce8692f6887a1d45c85477fee,c0251cc9271260de73b4227859a51fab9b4cb745,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/531,, 1306498393,PR_kwDOCGYnMM5N35VZ,536,closed,0,Add paths for homebrew on Apple silicon,25778,"Does what it says and nothing else. This is the same set of paths as Datasette uses. ---- :books: Documentation preview :books:: https://sqlite-utils--536.org.readthedocs.build/en/536/ ",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,140912432,https://github.com/simonw/sqlite-utils/pull/536,, 1311438738,PR_kwDOCGYnMM5OKveS,537,closed,0,Support self-referencing FKs in `Table.create`,544011," ---- :books: Documentation preview :books:: https://sqlite-utils--537.org.readthedocs.build/en/537/ ",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,140912432,https://github.com/simonw/sqlite-utils/pull/537,, 255658112,MDExOlB1bGxSZXF1ZXN0MjU1NjU4MTEy,12,closed,0,"Support for numpy types, closes #11",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,140912432,https://github.com/simonw/sqlite-utils/pull/12,, 537791675,MDExOlB1bGxSZXF1ZXN0NTM3NzkxNjc1,208,closed,0,sqlite-utils analyze-tables command and table.analyze_column() method,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,140912432,https://github.com/simonw/sqlite-utils/pull/208,, 1034485141,PR_kwDOCGYnMM49qP2V,468,closed,0,"db[table].create(..., transform=True) and create-table --transform",9599,"Work in progress. Still needs documentation and tests (and to cover more cases of things that might have changed). Refs: - #467 ---- :books: Documentation preview :books:: https://sqlite-utils--468.org.readthedocs.build/en/468/ ",2022-08-23T17:27:58Z,2022-08-27T23:17:55Z,2022-08-27T23:17:55Z,2022-08-27T23:17:55Z,104f37fa4d2e7e5999c1d829267b62c737f74d3e,,8355157,0,2f6a64f61d561df821d737719941c678dcb1a03c,c5f8a2eb1a81a18b52825cc649112f71fe419b12,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/468,, 510956134,MDExOlB1bGxSZXF1ZXN0NTEwOTU2MTM0,190,closed,0,Progress bar for sqlite-utils insert command,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,140912432,https://github.com/simonw/sqlite-utils/pull/190,, 700944644,MDExOlB1bGxSZXF1ZXN0NzAwOTQ0NjQ0,303,closed,0,sqlite-utils convert command and db[table].convert(...) method,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,140912432,https://github.com/simonw/sqlite-utils/pull/303,, 313007483,MDExOlB1bGxSZXF1ZXN0MzEzMDA3NDgz,56,closed,0,Escape the table name in populate_fts and search.,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"") >>> db[""http://example.com""].enable_fts([""name""]) Traceback (most recent call last): File """", line 1, in 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,140912432,https://github.com/simonw/sqlite-utils/pull/56,, 313105634,MDExOlB1bGxSZXF1ZXN0MzEzMTA1NjM0,57,closed,0,Add triggers while enabling FTS,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,140912432,https://github.com/simonw/sqlite-utils/pull/57,, 247576942,MDExOlB1bGxSZXF1ZXN0MjQ3NTc2OTQy,4,closed,0,Fts5,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,140912432,https://github.com/simonw/sqlite-utils/pull/4,, 445833908,MDExOlB1bGxSZXF1ZXN0NDQ1ODMzOTA4,120,closed,0,Fix query command's support for DML,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,140912432,https://github.com/simonw/sqlite-utils/pull/120,, 1082769953,PR_kwDOCGYnMM5AicIh,498,closed,0,fix: enable-fts permanently save triggers,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 ---- :books: Documentation preview :books:: https://sqlite-utils--498.org.readthedocs.build/en/498/ ",2022-10-11T05:10:51Z,2022-10-15T04:33:08Z,2022-10-11T06:34:31Z,,ab24d21e9c2aa9c514c3b65f05cfc0bafa7621c1,,,0,75577e595d9177177a48030a1c39573af010df51,d792dad1cf5f16525da81b1e162fb71d469995f3,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/498,, 1083804914,PR_kwDOCGYnMM5AmYzy,499,open,0,feat: recreate fts triggers after table transform,7908073,"https://github.com/simonw/sqlite-utils/pull/498 ---- :books: Documentation preview :books:: https://sqlite-utils--499.org.readthedocs.build/en/499/ alternatively, `self.disable_fts()`",2022-10-11T20:35:39Z,2022-10-26T17:54:51Z,,,6c71562a7a21ab93541a14453961ce3d6abca3cc,,,0,a25e83841f2703afb08aff4589cb559ae9060776,d792dad1cf5f16525da81b1e162fb71d469995f3,CONTRIBUTOR,140912432,https://github.com/simonw/sqlite-utils/pull/499,, 1050417981,PR_kwDOCGYnMM4-nBs9,486,closed,0,"progressbar for inserts/upserts of all fileformats, closes #485",99098079," ---- :books: Documentation preview :books:: https://sqlite-utils--486.org.readthedocs.build/en/486/ ",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,140912432,https://github.com/simonw/sqlite-utils/pull/486,, 357992588,MDExOlB1bGxSZXF1ZXN0MzU3OTkyNTg4,72,closed,0,Fixed implementation of upsert,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,140912432,https://github.com/simonw/sqlite-utils/pull/72,, 475874493,MDExOlB1bGxSZXF1ZXN0NDc1ODc0NDkz,146,closed,0,Handle case where subsequent records (after first batch) include extra columns,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,140912432,https://github.com/simonw/sqlite-utils/pull/146,, 1358254580,PR_kwDOCGYnMM5Q9VH0,546,closed,0,"Analyze tables options: --common-limit, --no-most, --no-least",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,140912432,https://github.com/simonw/sqlite-utils/pull/546,, 303990683,MDExOlB1bGxSZXF1ZXN0MzAzOTkwNjgz,53,closed,0,Work in progress: m2m() method for creating many-to-many records,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,140912432,https://github.com/simonw/sqlite-utils/pull/53,, 300377599,MDExOlB1bGxSZXF1ZXN0MzAwMzc3NTk5,47,closed,0,extracts= table parameter,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,140912432,https://github.com/simonw/sqlite-utils/pull/47,, 1358321208,PR_kwDOCGYnMM5Q9lY4,553,closed,0,Reformatted CLI examples in docs,9599,"Refs: - #551 ---- :books: Documentation preview :books:: https://sqlite-utils--553.org.readthedocs.build/en/553/ ",2023-05-21T20:44:34Z,2023-05-21T20:57:27Z,2023-05-21T20:57:23Z,2023-05-21T20:57:22Z,d8fe1b0d899faaaa3d4714a39328f4c24932278f,,,0,21036a5084a2c846a05feb6bced3111d849bbe3c,e240133b11588d31dc22c632f7a7ca636c72978d,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/553,, 925807233,PR_kwDOCGYnMM43LrKB,429,closed,0,Depend on click-default-group-wheel,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,140912432,https://github.com/simonw/sqlite-utils/pull/429,, 510235909,MDExOlB1bGxSZXF1ZXN0NTEwMjM1OTA5,189,closed,0,Allow iterables other than Lists in m2m records,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,140912432,https://github.com/simonw/sqlite-utils/pull/189,, 853484980,PR_kwDOCGYnMM4y3yW0,407,closed,0,Add SpatiaLite helpers to CLI,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,140912432,https://github.com/simonw/sqlite-utils/pull/407,, 1358282799,PR_kwDOCGYnMM5Q9cAv,549,closed,0,TUI powered by Trogon,9599,"Refs: - #545 ---- :books: Documentation preview :books:: https://sqlite-utils--549.org.readthedocs.build/en/549/ ",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,140912432,https://github.com/simonw/sqlite-utils/pull/549,, 475665984,MDExOlB1bGxSZXF1ZXN0NDc1NjY1OTg0,142,closed,0,"insert_all(..., alter=True) should work for new columns introduced after the first 100 records",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,140912432,https://github.com/simonw/sqlite-utils/pull/142,, 707490789,MDExOlB1bGxSZXF1ZXN0NzA3NDkwNzg5,312,closed,0,Add reference page to documentation using Sphinx autodoc,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,140912432,https://github.com/simonw/sqlite-utils/pull/312,, 490607949,MDExOlB1bGxSZXF1ZXN0NDkwNjA3OTQ5,161,closed,0,table.transform() method,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 - Support for `conversions=` parameter - [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,,5897911,0,dc3eb9c313502832c07f4de889aa60c373f45b52,ef882986d07f157b6bcc6be3d7b64270fda3e523,OWNER,140912432,https://github.com/simonw/sqlite-utils/pull/161,, 521287994,MDExOlB1bGxSZXF1ZXN0NTIxMjg3OTk0,203,open,0,changes to allow for compound foreign keys,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,140912432,https://github.com/simonw/sqlite-utils/pull/203,,