{"html_url": "https://github.com/simonw/datasette/pull/602#issuecomment-549246007", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/602", "id": 549246007, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTI0NjAwNw==", "user": {"value": 2657547, "label": "rixx"}, "created_at": "2019-11-04T07:29:33Z", "updated_at": "2019-11-04T07:29:33Z", "author_association": "CONTRIBUTOR", "body": "Not sure \u2013 I'm always a bit weirded out when elements that I clicked disappear on me.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 509535510, "label": "Offer to format readonly SQL"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/602#issuecomment-549210237", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/602", "id": 549210237, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTIxMDIzNw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T02:49:18Z", "updated_at": "2019-11-04T02:49:18Z", "author_association": "OWNER", "body": "Live demo can now be seen here: https://latest.datasette.io/fixtures/%F0%9D%90%9C%F0%9D%90%A2%F0%9D%90%AD%F0%9D%90%A2%F0%9D%90%9E%F0%9D%90%AC", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 509535510, "label": "Offer to format readonly SQL"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/602#issuecomment-549210352", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/602", "id": 549210352, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTIxMDM1Mg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T02:50:15Z", "updated_at": "2019-11-04T02:50:15Z", "author_association": "OWNER", "body": "I wonder if the `Format SQL` button should disappear in the read-only case once it has been clicked? It won't do anything if it's clicked again and there's no textarea for the user to mess up the now-formatted SQL.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 509535510, "label": "Offer to format readonly SQL"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/614#issuecomment-549222252", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/614", "id": 549222252, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTIyMjI1Mg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T04:31:58Z", "updated_at": "2019-11-04T04:31:58Z", "author_association": "OWNER", "body": "Demo: https://latest.datasette.io/fixtures/facetable?pk__notin=1,2,3", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 516950748, "label": "Add \"not in\" filter - ?pk__notin=x,y,z"}, "performed_via_github_app": null} {"html_url": "https://github.com/dogsheep/twitter-to-sqlite/issues/3#issuecomment-549226399", "issue_url": "https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/3", "id": 549226399, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTIyNjM5OQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T05:11:57Z", "updated_at": "2019-11-04T05:11:57Z", "author_association": "MEMBER", "body": "I'm going to add a `hash` column to `search_runs` to support that. It's going to be the sha1 hash of the key-ordered JSON of the search arguments used by that run. Then `--since` can look for an identical hash and use it to identify the highest last fetched tweet to use in `since_id`.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 488833975, "label": "Command for running a search and saving tweets for that search"}, "performed_via_github_app": null} {"html_url": "https://github.com/dogsheep/twitter-to-sqlite/issues/3#issuecomment-549228535", "issue_url": "https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/3", "id": 549228535, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTIyODUzNQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T05:31:55Z", "updated_at": "2019-11-04T05:31:55Z", "author_association": "MEMBER", "body": "Documented here: https://github.com/dogsheep/twitter-to-sqlite/blob/801c0c2daf17d8abce9dcb5d8d610410e7e25dbe/README.md#running-searches", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 488833975, "label": "Command for running a search and saving tweets for that search"}, "performed_via_github_app": null} {"html_url": "https://github.com/dogsheep/github-to-sqlite/issues/10#issuecomment-549230337", "issue_url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/10", "id": 549230337, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTIzMDMzNw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T05:47:18Z", "updated_at": "2019-11-04T05:47:18Z", "author_association": "MEMBER", "body": "This definition isn't quite right - it's not pulling the identity of the user who starred the repo (`users.login` ends up being the owner login instead).", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 516967682, "label": "Add this repos_starred view"}, "performed_via_github_app": null} {"html_url": "https://github.com/dogsheep/github-to-sqlite/pull/8#issuecomment-549230583", "issue_url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/8", "id": 549230583, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTIzMDU4Mw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T05:49:26Z", "updated_at": "2019-11-04T05:49:26Z", "author_association": "MEMBER", "body": "Adding the view from #10 would be useful here too.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 516763727, "label": "stargazers command, refs #4"}, "performed_via_github_app": null} {"html_url": "https://github.com/dogsheep/github-to-sqlite/pull/8#issuecomment-549233778", "issue_url": "https://api.github.com/repos/dogsheep/github-to-sqlite/issues/8", "id": 549233778, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTIzMzc3OA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T06:14:40Z", "updated_at": "2019-11-04T06:14:40Z", "author_association": "MEMBER", "body": "Spotted a tricky problem: running `github-to-sqlite starred stargazers.db` results in an incomplete `simonw` record. It creates a proper record for me thanks to this bit:\r\n\r\nhttps://github.com/dogsheep/github-to-sqlite/blob/ea07274667a08c67907e8bfbbccb6f0fb95ce817/github_to_sqlite/cli.py#L120-L126\r\n\r\nBut then... when it gets to the `datasette` repository which I have starred it over-writes my full user record with one that's missing most of the details, thanks to this bit:\r\n\r\nhttps://github.com/dogsheep/github-to-sqlite/blob/ea07274667a08c67907e8bfbbccb6f0fb95ce817/github_to_sqlite/utils.py#L117-L124\r\n\r\nI need to find a way of NOT over-writing a good record with a thinner one.\r\n\r\n", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 516763727, "label": "stargazers command, refs #4"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/62#issuecomment-549418134", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/62", "id": 549418134, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTQxODEzNA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T15:54:18Z", "updated_at": "2019-11-04T15:54:18Z", "author_association": "OWNER", "body": "This is a good idea. The individual row version of it can work like the `.update(pk, ...)` method.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 500783373, "label": "[enhancement] Method to delete a row in python"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/62#issuecomment-549425012", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/62", "id": 549425012, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTQyNTAxMg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T16:09:08Z", "updated_at": "2019-11-04T16:09:08Z", "author_association": "OWNER", "body": "Documentation for `table.delete()`: https://github.com/simonw/sqlite-utils/blob/19073d6d972fad9d68dd74c28544cd29083f1c12/docs/python-api.rst#deleting-a-specific-record", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 500783373, "label": "[enhancement] Method to delete a row in python"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/62#issuecomment-549425364", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/62", "id": 549425364, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTQyNTM2NA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T16:09:56Z", "updated_at": "2019-11-04T16:09:56Z", "author_association": "OWNER", "body": "Since we have `table.rows_where(where, where_args)` it makes sense to me to also support `table.delete_where(where, where_args)`.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 500783373, "label": "[enhancement] Method to delete a row in python"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/62#issuecomment-549429512", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/62", "id": 549429512, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTQyOTUxMg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T16:18:48Z", "updated_at": "2019-11-04T16:18:48Z", "author_association": "OWNER", "body": "Documentation for `.delete_where()`: https://github.com/simonw/sqlite-utils/blob/169ea455fc1f1d5e5b6e44cb339ba7ffa9d49c31/docs/python-api.rst#deleting-multiple-records", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 500783373, "label": "[enhancement] Method to delete a row in python"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/63#issuecomment-549430429", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/63", "id": 549430429, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTQzMDQyOQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T16:20:35Z", "updated_at": "2019-11-04T16:20:35Z", "author_association": "OWNER", "body": "I don't think we need this. We already have a `dogs.create_index([\"name\"], if_not_exists=True)` option.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 517241040, "label": "ensure_index() method"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/61#issuecomment-549432592", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/61", "id": 549432592, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTQzMjU5Mg==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T16:25:01Z", "updated_at": "2019-11-04T16:25:01Z", "author_association": "OWNER", "body": "Yeah I've thought about this a bit and I'm OK leaving it out.\r\n\r\nThe core idea of `sqlite-utils` is that if you can create a list, iterator or generator of Python dictionaries you can efficiently insert those into a SQLite table.\r\n\r\nThe `--csv` function is actually implemented as just a few lines of code which turn that incoming CSV into a generator of dictionaries:\r\n\r\nhttps://github.com/simonw/sqlite-utils/blob/169ea455fc1f1d5e5b6e44cb339ba7ffa9d49c31/sqlite_utils/cli.py#L364-L368\r\n\r\nI could turn this into a reusable helper function but since it wouldn't have anything to do with database inserts (it would just be a helper that turns a CSV into a generator of dictionaries) it doesn't feel like it fits well in the Python library section of this package.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 491219910, "label": "importing CSV to SQLite as library"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/62#issuecomment-549435364", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/62", "id": 549435364, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTQzNTM2NA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T16:30:34Z", "updated_at": "2019-11-04T16:30:34Z", "author_association": "OWNER", "body": "Released as 1.12.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 500783373, "label": "[enhancement] Method to delete a row in python"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/292#issuecomment-549584753", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/292", "id": 549584753, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTU4NDc1Mw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T22:54:26Z", "updated_at": "2019-11-04T22:54:26Z", "author_association": "OWNER", "body": "I'm going to split off an issue just for `?_col=` and `?_nocol=`", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 326800219, "label": "Mechanism for customizing the SQL used to select specific columns in the table view"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/615#issuecomment-549585571", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/615", "id": 549585571, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTU4NTU3MQ==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T22:57:16Z", "updated_at": "2019-11-04T22:57:16Z", "author_association": "OWNER", "body": "First step: stop using `select *` and switch to selecting columns instead. This will also make the `View and edit SQL` button more useful.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 517451234, "label": "?_col= and ?_nocol= support for toggling columns on table view"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/615#issuecomment-549591028", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/615", "id": 549591028, "node_id": "MDEyOklzc3VlQ29tbWVudDU0OTU5MTAyOA==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2019-11-04T23:15:28Z", "updated_at": "2019-11-04T23:15:28Z", "author_association": "OWNER", "body": "Demo: visit https://52fa79c.datasette.io/fixtures/roadside_attractions and click \"View and edit SQL\" - you'll be sent to https://52fa79c.datasette.io/fixtures?sql=select+pk%2C+name%2C+address%2C+latitude%2C+longitude+from+roadside_attractions+order+by+pk+limit+101", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 517451234, "label": "?_col= and ?_nocol= support for toggling columns on table view"}, "performed_via_github_app": null}