issue_comments
199 rows where reactions = "{"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0}" sorted by body
This data as json, CSV (advanced)
Suggested facets: author_association
id | html_url | issue_url | node_id | user | created_at | updated_at | author_association | body ▼ | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
1066222323 | https://github.com/simonw/datasette/issues/1384#issuecomment-1066222323 | https://api.github.com/repos/simonw/datasette/issues/1384 | IC_kwDOBm6k_c4_jULz | brandonrobertz 2670795 | 2022-03-14T00:36:42Z | 2022-03-14T00:36:42Z | CONTRIBUTOR | > Ah, sorry, I didn't get what you were saying you the first time. Using _metadata_local in that way makes total sense -- I agree, refreshing metadata each cell was seeming quite excessive. Now I'm on the same page! :) All good. Report back any issues you find with this stuff. Metadata/dynamic config hasn't been tested widely outside of what I've done AFAIK. If you find a strong use case for async meta, it's going to be better to know sooner rather than later! | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Plugin hook for dynamic metadata 930807135 | |
1616095810 | https://github.com/simonw/datasette/pull/2052#issuecomment-1616095810 | https://api.github.com/repos/simonw/datasette/issues/2052 | IC_kwDOBm6k_c5gU6pC | asg017 15178711 | 2023-07-01T20:31:31Z | 2023-07-01T20:31:31Z | CONTRIBUTOR | > Just curious, is there a query that can be used to compile this programmatically, or did you identify these through memory? I just did a github search for `user:simonw "def extra_js_urls("` ! Though I'm sure other plugins made by people other than Simon also exist out there https://github.com/search?q=user%3Asimonw+%22def+extra_js_urls%28%22&type=code | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 1651082214 | |
790389335 | https://github.com/dogsheep/google-takeout-to-sqlite/pull/5#issuecomment-790389335 | https://api.github.com/repos/dogsheep/google-takeout-to-sqlite/issues/5 | MDEyOklzc3VlQ29tbWVudDc5MDM4OTMzNQ== | UtahDave 306240 | 2021-03-04T07:32:04Z | 2021-03-04T07:32:04Z | NONE | > The command takes quite a while to start running, presumably because this line causes it to have to scan the WHOLE file in order to generate a count: > > https://github.com/dogsheep/google-takeout-to-sqlite/blob/a3de045eba0fae4b309da21aa3119102b0efc576/google_takeout_to_sqlite/utils.py#L66-L67 > > I'm fine with waiting though. It's not like this is a command people run every day - and without that count we can't show a progress bar, which seems pretty important for a process that takes this long. The wait is from python loading the mbox file. This happens regardless if you're getting the length of the mbox. The mbox module is on the slow side. It is possible to do one's own parsing of the mbox, but I kind of wanted to avoid doing that. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | WIP: Add Gmail takeout mbox import 813880401 | |
1316340865 | https://github.com/simonw/datasette/pull/1893#issuecomment-1316340865 | https://api.github.com/repos/simonw/datasette/issues/1893 | IC_kwDOBm6k_c5OdcSB | simonw 9599 | 2022-11-16T04:49:30Z | 2022-11-16T04:49:43Z | OWNER | > The main issue is that we don't pass the relevant table data down to QueryView. If you can come up with a static example JSON data structure example that does the right thing, I'm happy to refactor QueryView to make that available to the template - or even have a separate `fetch()` that grabs just the data needed for the autocomplete as a separate hit when the page loads (whichever has better performance implications). I'm working a fair amount in the view classes at the moment so adding this to that work would make sense. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Upgrade to CodeMirror 6, add SQL autocomplete 1450363982 | |
860548546 | https://github.com/simonw/datasette/issues/1375#issuecomment-860548546 | https://api.github.com/repos/simonw/datasette/issues/1375 | MDEyOklzc3VlQ29tbWVudDg2MDU0ODU0Ng== | frafra 4068 | 2021-06-14T09:41:59Z | 2021-06-14T09:41:59Z | NONE | > There is a feature for this at the moment, but it's a little bit hidden: you can use `?_json=col` to tell > Datasette that you would like a specific column to be exported as nested JSON: https://docs.datasette.io/en/stable/json_api.html#special-json-arguments Thanks :) > I considered trying to make this automatic - so it detects columns that appear to contain valid JSON and outputs them as nested objects - but the problem with that is that it can lead to inconsistent results - you might hit the API and find that not every column contains valid JSON (compared to the previous day) resulting in the API retuning string instead of the expected dictionary and breaking your code. If a developer is not sure if the JSON fields are valid, but then retrieves and parse them, it should handle errors too. Handling inconsistent data is necessary due to the nature of SQLite. A global or dataset option to render the data as they have been defined (JSON, boolean, etc.) when requesting JSON could allow the user to download a regular JSON from the browser without having to rely on APIs. I would guess someone could just make a custom template with an extra JSON-parsed download button otherwise :) | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | JSON export dumps JSON fields as TEXT 919508498 | |
1548617257 | https://github.com/simonw/datasette/pull/2052#issuecomment-1548617257 | https://api.github.com/repos/simonw/datasette/issues/2052 | IC_kwDOBm6k_c5cTgYp | cldellow 193185 | 2023-05-15T21:32:20Z | 2023-05-15T21:32:20Z | CONTRIBUTOR | > Were you picturing that the whole plugin config object could be returned as a promise, or that the individual hooks (like makeColumnActions or makeAboveTablePanelConfigs supported returning a promise of arrays instead only returning plain arrays? The latter - that you could return a promise of arrays, so it parallels the ["await me maybe" pattern in Datasette](https://simonwillison.net/2020/Sep/2/await-me-maybe/), where you can return either a value, a callable or an awaitable. > I have a hunch that what you're describing might be achievable without adding Promises to the API with something Oops, I did a poor job explaining. Yes, this would work - but it requires me to continue to communicate the column names out of band (in order to fetch the facet data per-column before registering my plugin), vs being able to re-use them from the plugin implementation. This isn't that big of a deal - it'd be a nice ergonomic improvement, but nowhere near as a big of an improvement as having an officially sanctioned way to add stuff to the column menus in the first place. This could also be layered on in a future commit without breaking v1 users, too, so it's not at all urgent. > especially if those lines are encapsulated by a function we provide (maybe something that's available on the window provided by Datasette as an inline script tag Ah, this is maybe the the key point. Since it's all hosted inside Datasette, Datasette can provide some arbitrary sugar to make it easier to work with. My experience with async scripts in JS is that people sometimes don't understand the race conditions inherent to them. If they copy/paste from a tutorial, it does just work. But then they'll delete half the code, and by chance it still works on their machine/Datasette templates, and now someone's headed for an annoying debugging session -- maybe them, maybe someone else who tries to re-use their plugin. Again, a fairly minor thing, though. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | feat: Javascript Plugin API (Custom panels, column menu items with JS actions) 1651082214 | |
1017998993 | https://github.com/simonw/datasette/issues/1608#issuecomment-1017998993 | https://api.github.com/repos/simonw/datasette/issues/1608 | IC_kwDOBm6k_c48rW6R | simonw 9599 | 2022-01-20T22:56:00Z | 2022-01-20T22:56:00Z | OWNER | > https://sphinx-version-warning.readthedocs.io/ looks like it can show a banner for "You are looking at v0.36 but you should be looking at 0.40" but doesn't hand the case I need here which is "you are looking at /latest/ but you should be looking at /stable/". Correction! That tool DOES support that, as can be seen in their example configuration for their own documentation: https://github.com/humitos/sphinx-version-warning/blob/a82156c2ea08e5feab406514d0ccd9d48a345f48/docs/conf.py#L32-L38 ```python versionwarning_messages = { 'latest': 'This is a custom message only for version "latest" of this documentation.', } versionwarning_admonition_type = 'tip' versionwarning_banner_title = 'Tip' versionwarning_body_selector = 'div[itemprop="articleBody"]' ``` | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Documentation should clarify /stable/ vs /latest/ 1109808154 | |
509154312 | https://github.com/simonw/datasette/issues/514#issuecomment-509154312 | https://api.github.com/repos/simonw/datasette/issues/514 | MDEyOklzc3VlQ29tbWVudDUwOTE1NDMxMg== | JesperTreetop 4363711 | 2019-07-08T09:36:25Z | 2019-07-08T09:40:33Z | NONE | @chrismp: Ports 1024 and under are privileged and can usually only be bound by a root or supervisor user, so it makes sense if you're running as the user `chris` that port 8000 works but 80 doesn't. See [this generic question-and-answer](https://superuser.com/questions/710253/allow-non-root-process-to-bind-to-port-80-and-443) and [this systemd question-and-answer](https://stackoverflow.com/questions/40865775/linux-systemd-service-on-port-80) for more information about ways to skin this cat. Without knowing your specific circumstances, either extending those privileges to that service/executable/user, proxying them through something like nginx or indeed looking at what the nginx systemd job has to do to listen at port 80 all sound like good ways to start. At this point, this is more generic systemd/Linux support than a Datasette issue, which is why a complete rando like me is able to contribute anything. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Documentation with recommendations on running Datasette in production without using Docker 459397625 | |
549665423 | https://github.com/simonw/datasette/issues/567#issuecomment-549665423 | https://api.github.com/repos/simonw/datasette/issues/567 | MDEyOklzc3VlQ29tbWVudDU0OTY2NTQyMw== | simonw 9599 | 2019-11-05T05:11:14Z | 2019-11-05T05:11:14Z | OWNER | @clausjuhl I wrote a bit about that here: https://simonwillison.net/2019/May/19/datasette-0-28/ Short version: just point Datasette at a SQLite file and update it from another process - it should work fine! I do it all the time now - I'll have a script running that writes to a database and I'll use Datasette to monitor progress. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Datasette Edit 476573875 | |
1186657003 | https://github.com/simonw/datasette/pull/1685#issuecomment-1186657003 | https://api.github.com/repos/simonw/datasette/issues/1685 | IC_kwDOBm6k_c5GuvLr | simonw 9599 | 2022-07-18T01:06:58Z | 2022-07-18T01:06:58Z | OWNER | @dependabot rebase | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Update jinja2 requirement from <3.1.0,>=2.10.3 to >=2.10.3,<3.2.0 1180778860 | |
1294034011 | https://github.com/simonw/datasette/pull/1839#issuecomment-1294034011 | https://api.github.com/repos/simonw/datasette/issues/1839 | IC_kwDOBm6k_c5NIWRb | simonw 9599 | 2022-10-27T20:34:37Z | 2022-10-27T20:34:37Z | OWNER | @dependabot rebase | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Bump black from 22.8.0 to 22.10.0 1401155623 | |
852673695 | https://github.com/simonw/datasette/pull/1352#issuecomment-852673695 | https://api.github.com/repos/simonw/datasette/issues/1352 | MDEyOklzc3VlQ29tbWVudDg1MjY3MzY5NQ== | simonw 9599 | 2021-06-02T02:52:26Z | 2021-06-02T02:52:26Z | OWNER | @dependabot recreate | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Bump black from 21.5b1 to 21.5b2 908276134 | |
943594712 | https://github.com/simonw/datasette/pull/1489#issuecomment-943594712 | https://api.github.com/repos/simonw/datasette/issues/1489 | IC_kwDOBm6k_c44PhzY | simonw 9599 | 2021-10-14T18:04:11Z | 2021-10-14T18:04:11Z | OWNER | @dependabot recreate | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Update pyyaml requirement from ~=5.3 to >=5.3,<7.0 1026379132 | |
1487998788 | https://github.com/simonw/datasette/pull/2014#issuecomment-1487998788 | https://api.github.com/repos/simonw/datasette/issues/2014 | IC_kwDOBm6k_c5YsQ9E | simonw 9599 | 2023-03-29T06:08:23Z | 2023-03-29T06:08:23Z | OWNER | @dependabot recreate | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Bump black from 22.12.0 to 23.1.0 1566081801 | |
1613290899 | https://github.com/simonw/datasette/pull/2077#issuecomment-1613290899 | https://api.github.com/repos/simonw/datasette/issues/2077 | IC_kwDOBm6k_c5gKN2T | simonw 9599 | 2023-06-29T14:32:16Z | 2023-06-29T14:32:16Z | OWNER | @dependabot recreate | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Bump furo from 2023.3.27 to 2023.5.20 1719759468 | |
617208503 | https://github.com/simonw/datasette/issues/176#issuecomment-617208503 | https://api.github.com/repos/simonw/datasette/issues/176 | MDEyOklzc3VlQ29tbWVudDYxNzIwODUwMw== | nkirsch 12976 | 2020-04-21T14:16:24Z | 2020-04-21T14:16:24Z | NONE | @eads I'm interested in helping, if there's still a need... | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Add GraphQL endpoint 285168503 | |
790857004 | https://github.com/simonw/datasette/issues/1238#issuecomment-790857004 | https://api.github.com/repos/simonw/datasette/issues/1238 | MDEyOklzc3VlQ29tbWVudDc5MDg1NzAwNA== | tsibley 79913 | 2021-03-04T19:06:55Z | 2021-03-04T19:06:55Z | NONE | @rgieseke Ah, that's super helpful. Thank you for the workaround for now! | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Custom pages don't work with base_url setting 813899472 | |
726412057 | https://github.com/simonw/datasette/issues/865#issuecomment-726412057 | https://api.github.com/repos/simonw/datasette/issues/865 | MDEyOklzc3VlQ29tbWVudDcyNjQxMjA1Nw== | simonw 9599 | 2020-11-12T23:49:23Z | 2020-11-12T23:49:23Z | OWNER | @tballison thanks, I've split that out into a new issue #1091 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | base_url doesn't seem to work when adding criteria and clicking "apply" 644582921 | |
718342036 | https://github.com/simonw/datasette/issues/1050#issuecomment-718342036 | https://api.github.com/repos/simonw/datasette/issues/1050 | MDEyOklzc3VlQ29tbWVudDcxODM0MjAzNg== | simonw 9599 | 2020-10-29T03:49:57Z | 2020-10-29T03:49:57Z | OWNER | @thadk from that error it looks like the problem may have been that you had a BLOB column containing a `null` value? If so that's definitely a bug, I'll fix that. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Switch to .blob render extension for BLOB downloads 729057388 | |
1356842576 | https://github.com/simonw/datasette/issues/1886#issuecomment-1356842576 | https://api.github.com/repos/simonw/datasette/issues/1886 | IC_kwDOBm6k_c5Q38ZQ | stevecrawshaw 18738650 | 2022-12-18T17:34:20Z | 2022-12-18T17:34:20Z | NONE | A bit late to this, but I have made an app to publish air quality data in Bristol, UK. [air quality data in Bristol, UK.](https://brisaq-wfzqhmj43q-ew.a.run.app/) Next step to see if I can make a streamlit app based on this to produce some nice charts. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Call for birthday presents: if you're using Datasette, let us know how you're using it here 1447050738 | |
774385092 | https://github.com/simonw/datasette/issues/1217#issuecomment-774385092 | https://api.github.com/repos/simonw/datasette/issues/1217 | MDEyOklzc3VlQ29tbWVudDc3NDM4NTA5Mg== | plpxsk 6165713 | 2021-02-06T02:49:11Z | 2021-02-06T02:49:11Z | NONE | A good reference seems to be the note to run `datasette` as a module in https://github.com/simonw/datasette/pull/556 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Possible to deploy as a python app (for Rstudio connect server)? 802513359 | |
864128489 | https://github.com/simonw/sqlite-utils/issues/278#issuecomment-864128489 | https://api.github.com/repos/simonw/sqlite-utils/issues/278 | MDEyOklzc3VlQ29tbWVudDg2NDEyODQ4OQ== | simonw 9599 | 2021-06-18T15:46:24Z | 2021-06-18T15:46:24Z | OWNER | A workaround could be to define a bash or zsh alias of some sort. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Support db as first parameter before subcommand, or as environment variable 923697888 | |
1312821031 | https://github.com/simonw/datasette/issues/1871#issuecomment-1312821031 | https://api.github.com/repos/simonw/datasette/issues/1871 | IC_kwDOBm6k_c5OQA8n | simonw 9599 | 2022-11-13T21:02:06Z | 2022-11-13T21:03:11Z | OWNER | Actually no, I'm going to add a class of `details-menu` to the other details elements that SHOULD be closed. That way custom templates using `<details>` won't close in a surprising way. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | API explorer tool 1427293909 | |
743998792 | https://github.com/simonw/datasette/issues/1142#issuecomment-743998792 | https://api.github.com/repos/simonw/datasette/issues/1142 | MDEyOklzc3VlQ29tbWVudDc0Mzk5ODc5Mg== | nitinpaultifr 6622733 | 2020-12-13T12:14:06Z | 2020-12-13T12:14:06Z | NONE | Agreed, it would definitely provide better controls. However, I do feel it makes for a bit of inconsistent UX for the 'Advanced export' section, with links to download for JSON, checkboxes and radio buttons + button to download for CSV. Do you think this example makes the UX a bit nicer/consistent? ![Screenshot 2020-12-13 at 5 38 43 PM](https://user-images.githubusercontent.com/6622733/102011444-1dc1cd00-3d6a-11eb-9e38-5af198161e80.png) I could give it a try if you'd like but I've never contributed to an actual project! | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | "Stream all rows" is not at all obvious 763361458 | |
626395209 | https://github.com/dogsheep/dogsheep-photos/issues/21#issuecomment-626395209 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/21 | MDEyOklzc3VlQ29tbWVudDYyNjM5NTIwOQ== | simonw 9599 | 2020-05-10T21:52:42Z | 2020-05-10T21:52:42Z | MEMBER | Aha! It looks like I accidentally installed the old bplist into the same environment: ``` $ pip freeze | grep bpylist bpylist==0.1.4 bpylist2==3.0.0 ``` | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | bpylist.archiver.CircularReference: archive has a cycle with uid(13) 615474990 | |
1403084856 | https://github.com/simonw/datasette/issues/2001#issuecomment-1403084856 | https://api.github.com/repos/simonw/datasette/issues/2001 | IC_kwDOBm6k_c5ToWA4 | cldellow 193185 | 2023-01-25T04:31:02Z | 2023-01-25T04:31:02Z | CONTRIBUTOR | Aha, it's user error on my part. Adding ``` sqlite3_db_config.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int, ctypes.c_int] ``` makes it work reliably both on the CLI and from datasette, and now I can reproduce the errors you mentioned in the issue description. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Datasette is not compatible with SQLite's strict quoting compilation option 1553615704 | |
744522099 | https://github.com/simonw/datasette/issues/1142#issuecomment-744522099 | https://api.github.com/repos/simonw/datasette/issues/1142 | MDEyOklzc3VlQ29tbWVudDc0NDUyMjA5OQ== | nitinpaultifr 6622733 | 2020-12-14T15:37:47Z | 2020-12-14T15:37:47Z | NONE | Alright I could give it a try! This might be a stupid question, can you tell me how to run the server from my fork? So that I can test the changes? | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | "Stream all rows" is not at all obvious 763361458 | |
1317681193 | https://github.com/simonw/datasette/pull/1893#issuecomment-1317681193 | https://api.github.com/repos/simonw/datasette/issues/1893 | IC_kwDOBm6k_c5Oijgp | bgrins 95570 | 2022-11-16T21:19:13Z | 2022-11-16T21:19:13Z | CONTRIBUTOR | Alright, added Cmd+Enter to submit (Ctrl+Enter on Windows as well bc of using Meta-Enter on codemirror). We can make that MacOS only by changing the combo to Cmd+Enter specifically but I think it's probably fine to have both. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Upgrade to CodeMirror 6, add SQL autocomplete 1450363982 | |
753653260 | https://github.com/simonw/datasette/issues/1169#issuecomment-753653260 | https://api.github.com/repos/simonw/datasette/issues/1169 | MDEyOklzc3VlQ29tbWVudDc1MzY1MzI2MA== | simonw 9599 | 2021-01-03T17:54:40Z | 2021-01-03T17:54:40Z | OWNER | And @benpickles yes I would land that pull request straight away as-is. Thanks! | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Prettier package not actually being cached 777677671 | |
782789598 | https://github.com/simonw/datasette/issues/782#issuecomment-782789598 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDc4Mjc4OTU5OA== | simonw 9599 | 2021-02-21T03:30:02Z | 2021-02-21T03:30:02Z | OWNER | Another benefit to default:object - I could include a key that shows a list of available extras. I could then use that to power an interactive API explorer. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Redesign default .json format 627794879 | |
853567413 | https://github.com/simonw/datasette/issues/526#issuecomment-853567413 | https://api.github.com/repos/simonw/datasette/issues/526 | MDEyOklzc3VlQ29tbWVudDg1MzU2NzQxMw== | simonw 9599 | 2021-06-03T05:11:27Z | 2021-06-03T05:11:27Z | OWNER | Another potential way to implement this would be to hold the SQLite connection open and execute the full query there. I've avoided this in the past due to concerns of resource exhaustion - if multiple requests attempt this at the same time all of the connections in the pool will become tied up and the site will be unable to respond to further requests. But... now that Datasette has authentication there's the possibility of making this feature only available to specific authenticated users - the `--root` user for example. Which avoids the danger while unlocking a super-useful feature. Not to mention people who are running Datasette privately on their own laptop, or the proposed `--query` CLI feature in #1356. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Stream all results for arbitrary SQL and canned queries 459882902 | |
618155472 | https://github.com/simonw/datasette/issues/731#issuecomment-618155472 | https://api.github.com/repos/simonw/datasette/issues/731 | MDEyOklzc3VlQ29tbWVudDYxODE1NTQ3Mg== | simonw 9599 | 2020-04-23T03:28:42Z | 2020-04-23T03:28:56Z | OWNER | As an alternative to `--static` this could work by letting you create the following: - `static/css/` - `static/js/` Which would be automatically mounted at `/js/...` and `/css/...` Or maybe just mount `static/` at `/static/` instead? | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Option to automatically configure based on directory layout 605110015 | |
805109341 | https://github.com/simonw/datasette/issues/1153#issuecomment-805109341 | https://api.github.com/repos/simonw/datasette/issues/1153 | MDEyOklzc3VlQ29tbWVudDgwNTEwOTM0MQ== | simonw 9599 | 2021-03-23T17:55:48Z | 2021-03-23T18:41:57Z | OWNER | Beginnings of a UI element for switching between them: ```html <div style="border: 1px solid rgb(225, 228, 229); background-color: rgb(238, 255, 204); padding: 0.3em; position: relative; top: 3px; font-family: courier;"> <a href="#" style="display: inline-block; padding-left: 0px; padding-right: 2em;">JSON</a> <a href="#" style="display: inline-block;">YAML</a> </div> ``` <img width="646" alt="Metadata_—_Datasette_documentation" src="https://user-images.githubusercontent.com/9599/112194637-51f92500-8bc6-11eb-9662-3faa7ef37538.png"> That `<pre>` has a padding of 12px, so using 12px padding on the tab links should get them to line up better. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Use YAML examples in documentation by default, not JSON 771202454 | |
655652679 | https://github.com/simonw/sqlite-utils/issues/121#issuecomment-655652679 | https://api.github.com/repos/simonw/sqlite-utils/issues/121 | MDEyOklzc3VlQ29tbWVudDY1NTY1MjY3OQ== | tsibley 79913 | 2020-07-08T17:24:46Z | 2020-07-08T17:24:46Z | CONTRIBUTOR | Better transaction handling would be really great. Some of my thoughts on implementing better transaction discipline are in https://github.com/simonw/sqlite-utils/pull/118#issuecomment-655239728. My preferences: - Each CLI command should operate in a single transaction so that either the whole thing succeeds or the whole thing is rolled back. This avoids partially completed operations when an error occurs part way through processing. Partially completed operations are typically much harder to recovery from gracefully and may cause inconsistent data states. - The Python API should be transaction-agnostic and rely on the caller to coordinate transactions. Only the caller knows how individual insert, create, update, etc operations/methods should be bundled conceptually into transactions. When the caller is the CLI, for example, that bundling would be at the CLI command-level. Other callers might want to break up operations into multiple transactions. Transactions are usually most useful when controlled at the application-level (like logging configuration) instead of the library level. The library needs to provide an API that's conducive to transaction use, though. - The Python API should provide a context manager to provide consistent transactions handling with more useful defaults than Python's `sqlite3` module. The latter issues implicit `BEGIN` statements by default for most DML (`INSERT`, `UPDATE`, `DELETE`, … but not `SELECT`, I believe), but **not** DDL (`CREATE TABLE`, `DROP TABLE`, `CREATE VIEW`, …). Notably, the `sqlite3` module doesn't issue the implicit `BEGIN` until the first DML statement. It _does not_ issue it when entering the `with conn` block, like other DBAPI2-compatible modules do. The `with conn` block for `sqlite3` only arranges to commit or rollback an existing transaction when exiting. Including DDL and `SELECT`s in transactions is important for operation consistency, though. There are several existing bugs.python.org tickets about this and future changes are in the works, but sql… | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Improved (and better documented) support for transactions 652961907 | |
580029288 | https://github.com/simonw/datasette/issues/658#issuecomment-580029288 | https://api.github.com/repos/simonw/datasette/issues/658 | MDEyOklzc3VlQ29tbWVudDU4MDAyOTI4OA== | simonw 9599 | 2020-01-30T00:32:43Z | 2020-01-30T00:32:43Z | OWNER | Can you share how your file layout is working? You should have something like this: `static/app.css` - a CSS file Then run Datasette like this: `datasette my.db --static-dir=static:static/` Then `http://127.0.0.1:8001/static/app.css` should serve your CSS. Could you share the command you're using to deploy to Heroku? | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | How do I use the app.css as style sheet? 550293770 | |
579787057 | https://github.com/simonw/datasette/issues/662#issuecomment-579787057 | https://api.github.com/repos/simonw/datasette/issues/662 | MDEyOklzc3VlQ29tbWVudDU3OTc4NzA1Nw== | simonw 9599 | 2020-01-29T14:43:46Z | 2020-01-29T14:43:46Z | OWNER | Can you share the exact queries you're having trouble with? The SQL itself or even just the full URL to the page (it doesn't matter if it's to a Datasette instance that isn't available online - I just need to see the URL parameters). | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Escape_fts5_query-hookimplementation does not work with queries to standard tables 556814876 | |
505087020 | https://github.com/simonw/datasette/pull/437#issuecomment-505087020 | https://api.github.com/repos/simonw/datasette/issues/437 | MDEyOklzc3VlQ29tbWVudDUwNTA4NzAyMA== | simonw 9599 | 2019-06-24T16:38:56Z | 2019-06-24T16:38:56Z | OWNER | Closing this because it doesn't really fit the new model of inspect (though we should discuss in #465 how to further evolve this feature) and because as-of #272 we no longer use Sanic - though #520 will implement the equivalent of `prepare_sanic` against ASGI. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Add inspect and prepare_sanic hooks 438048318 | |
488555399 | https://github.com/simonw/datasette/issues/431#issuecomment-488555399 | https://api.github.com/repos/simonw/datasette/issues/431 | MDEyOklzc3VlQ29tbWVudDQ4ODU1NTM5OQ== | simonw 9599 | 2019-05-02T05:13:54Z | 2019-05-02T05:13:54Z | OWNER | Datasette master now treats databases as readonly but NOT immutable. This means you can make changes to those databases from another process and those changes will be instantly reflected in the Datasette interface. As such, reloading on database change is no longer necessary. Closing this ticket. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Datasette doesn't reload when database file changes 432870248 | |
803501756 | https://github.com/simonw/sqlite-utils/issues/249#issuecomment-803501756 | https://api.github.com/repos/simonw/sqlite-utils/issues/249 | MDEyOklzc3VlQ29tbWVudDgwMzUwMTc1Ng== | simonw 9599 | 2021-03-21T02:33:45Z | 2021-03-21T02:33:45Z | OWNER | Did you run `enable-fts` before you inserted the data? If so you'll need to run `populate-fts` after the insert to populate the FTS index. A better solution may be to add `--create-triggers` to the `enable-fts` command to add triggers that will automatically keep the index updated as you insert new records. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Full text search possibly broken? 836963850 | |
716048564 | https://github.com/simonw/datasette/issues/1033#issuecomment-716048564 | https://api.github.com/repos/simonw/datasette/issues/1033 | MDEyOklzc3VlQ29tbWVudDcxNjA0ODU2NA== | simonw 9599 | 2020-10-24T20:08:31Z | 2020-10-24T20:08:31Z | OWNER | Documentation here: https://docs.datasette.io/en/latest/internals.html#datasette-urls | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | datasette.urls.static_plugins(...) method 725099777 | |
353424169 | https://github.com/simonw/datasette/issues/175#issuecomment-353424169 | https://api.github.com/repos/simonw/datasette/issues/175 | MDEyOklzc3VlQ29tbWVudDM1MzQyNDE2OQ== | simonw 9599 | 2017-12-21T18:33:55Z | 2017-12-21T18:33:55Z | OWNER | Done - thanks for curating these: https://github.com/topics/automatic-api | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Add project topic "automatic-api" 282971961 | |
675718593 | https://github.com/simonw/datasette/issues/942#issuecomment-675718593 | https://api.github.com/repos/simonw/datasette/issues/942 | MDEyOklzc3VlQ29tbWVudDY3NTcxODU5Mw== | simonw 9599 | 2020-08-18T21:02:11Z | 2020-08-18T21:02:24Z | OWNER | Easiest solution: if you provide column metadata it gets displayed above the table, something like on https://fivethirtyeight.datasettes.com/fivethirtyeight/antiquities-act%2Factions_under_antiquities_act <img width="500" alt="fivethirtyeight__antiquities-act_actions_under_antiquities_act__344_rows" src="https://user-images.githubusercontent.com/9599/90565187-57d3e700-e15b-11ea-89c8-0270e3040a50.png"> HTML `title=` tooltips are also added to the table headers, which won't be visible on touch devices but that's OK because the information is visible on the page already. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Support column descriptions in metadata.json 681334912 | |
735443626 | https://github.com/simonw/datasette/issues/1114#issuecomment-735443626 | https://api.github.com/repos/simonw/datasette/issues/1114 | MDEyOklzc3VlQ29tbWVudDczNTQ0MzYyNg== | simonw 9599 | 2020-11-29T19:40:49Z | 2020-11-29T19:40:49Z | OWNER | Fix is out in 0.52.1: https://docs.datasette.io/en/latest/changelog.html#v0-52-1 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | --load-extension=spatialite not working with datasetteproject/datasette docker image 752966476 | |
843718859 | https://github.com/simonw/sqlite-utils/issues/253#issuecomment-843718859 | https://api.github.com/repos/simonw/sqlite-utils/issues/253 | MDEyOklzc3VlQ29tbWVudDg0MzcxODg1OQ== | simonw 9599 | 2021-05-19T03:31:47Z | 2021-05-19T03:31:47Z | OWNER | Fixed: https://simonwillison.net/2020/Sep/23/sqlite-advanced-alter-table/ | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | fixtures.db example error in sql-utils blog post 847423559 | |
581758728 | https://github.com/simonw/datasette/issues/577#issuecomment-581758728 | https://api.github.com/repos/simonw/datasette/issues/577 | MDEyOklzc3VlQ29tbWVudDU4MTc1ODcyOA== | simonw 9599 | 2020-02-04T06:11:53Z | 2020-02-04T06:11:53Z | OWNER | For the moment I'm going to move it to `async def render_template()` on `datasette` but otherwise keep the implementation the same. The new signature will be: async def render_template(self, template, context=None, request=None, view_name=None): `template` can be a list of strings or a single string. If a list of strings a template will be selected from them. I'll reconsider the large list of default context variables later on in a separate ticket. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Utility mechanism for plugins to render templates 497171390 | |
552275668 | https://github.com/simonw/datasette/pull/595#issuecomment-552275668 | https://api.github.com/repos/simonw/datasette/issues/595 | MDEyOklzc3VlQ29tbWVudDU1MjI3NTY2OA== | simonw 9599 | 2019-11-11T03:09:43Z | 2019-11-11T03:09:43Z | OWNER | Glitch has been upgraded to Python 3.7. I think I'm happy to drop 3.5 support now - users who want Python 3.5 can get it by installing `datasette==0.30.2` | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | bump uvicorn to 0.9.0 to be Python-3.8 friendly 506300941 | |
991754794 | https://github.com/simonw/datasette/issues/1549#issuecomment-991754794 | https://api.github.com/repos/simonw/datasette/issues/1549 | IC_kwDOBm6k_c47HPoq | simonw 9599 | 2021-12-11T19:16:33Z | 2021-12-11T19:16:33Z | OWNER | Good call! I'm doing a refactor #1518 right now which will hopefully bring the functionality of those two much closer - I'll make a note to consider this there too. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Redesign CSV export to improve usability 1077620955 | |
769455370 | https://github.com/simonw/datasette/issues/1209#issuecomment-769455370 | https://api.github.com/repos/simonw/datasette/issues/1209 | MDEyOklzc3VlQ29tbWVudDc2OTQ1NTM3MA== | simonw 9599 | 2021-01-28T23:00:21Z | 2021-01-28T23:00:21Z | OWNER | Good catch on the workaround here. The root problem is that `datasette-template-sql` looks for the first available databsae if you don't provide it with a `database=` argument, and in Datasette 0.54 the first available database changed to being the new `_internal` database. Is this a bug? I think it is - because the documented behaviour on https://docs.datasette.io/en/stable/internals.html#get-database-name is this: > `name` - string, optional > > The name to be used for this database - this will be used in the URL path, e.g. `/dbname`. If not specified Datasette will pick one based on the filename or memory name. Since the new behaviour differs from what was in the documentation I'm going to treat this as a bug and fix it. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | v0.54 500 error from sql query in custom template; code worked in v0.53; found a workaround 795367402 | |
812710120 | https://github.com/simonw/datasette/issues/1255#issuecomment-812710120 | https://api.github.com/repos/simonw/datasette/issues/1255 | MDEyOklzc3VlQ29tbWVudDgxMjcxMDEyMA== | jungle-boogie 1111743 | 2021-04-02T20:50:08Z | 2021-04-02T20:50:08Z | NONE | Hello again, I was able to get my facets running with this `settings.json`, which was lifted from one of Simon's datasette's and slightly modified. ``` { "default_page_size": 100, "max_returned_rows": 1000, "num_sql_threads": 3, "sql_time_limit_ms": 9000, "default_facet_size": 10, "facet_time_limit_ms": 9000, "facet_suggest_time_limit_ms": 500, "hash_urls": false, "allow_facet": true, "suggest_facets": false, "default_cache_ttl": 5, "default_cache_ttl_hashed": 31536000, "cache_size_kb": 0, "allow_csv_stream": true, "max_csv_mb": 100, "truncate_cells_html": 2048, "template_debug": false, "base_url": "/" } ``` | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Facets timing out but work when filtering 826700095 | |
1399589414 | https://github.com/simonw/datasette/pull/1159#issuecomment-1399589414 | https://api.github.com/repos/simonw/datasette/issues/1159 | IC_kwDOBm6k_c5TbAom | cldellow 193185 | 2023-01-22T19:48:41Z | 2023-01-22T19:48:41Z | CONTRIBUTOR | Hey @lovasoa, I hope you don't mind - I pulled this PR into [datasette-ui-extras](https://github.com/cldellow/datasette-ui-extras), a plugin I'm making that collects UI tweaks to Datasette. You can apply it to your own Datasette instance by running `datasette install datasette-ui-extras` | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Improve the display of facets information 774332247 | |
1033772902 | https://github.com/simonw/datasette/issues/236#issuecomment-1033772902 | https://api.github.com/repos/simonw/datasette/issues/236 | IC_kwDOBm6k_c49nh9m | jordaneremieff 1376648 | 2022-02-09T13:40:52Z | 2022-02-09T13:40:52Z | NONE | Hi @simonw, I've received some inquiries over the last year or so about Datasette and how it might be supported by [Mangum](https://github.com/jordaneremieff/mangum). I maintain Mangum which is, as far as I know, the only project that provides support for ASGI applications in AWS Lambda. If there is anything that I can help with here, please let me know because I think what Datasette provides to the community (even beyond OSS) is noble and worthy of special consideration. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | datasette publish lambda plugin 317001500 | |
579798917 | https://github.com/simonw/datasette/issues/662#issuecomment-579798917 | https://api.github.com/repos/simonw/datasette/issues/662 | MDEyOklzc3VlQ29tbWVudDU3OTc5ODkxNw== | clausjuhl 2181410 | 2020-01-29T15:08:57Z | 2020-01-29T15:08:57Z | NONE | Hi Simon Thankt you for a quick reply. Here are a few examples of urls, where I search the 'cases_fts'-virtual table for tokens in the title-column. It returns the same results, wether the other query-params are present or not. Searching for sky http://localhost:8001/db-7596a4e/cases?_search_title=sky&year__gte=1997&year__lte=2017&_sort_desc=last_deliberation_date Returns searchresults Searching for sky* http://localhost:8001/db-7596a4e/cases?_search_title=sky*&year__gte=1997&year__lte=2017&_sort_desc=last_deliberation_date Returns searchresults Searching for sky-tog http://localhost:8001/db-7596a4e/cases?_search_title=sky-tog&year__gte=1997&year__lte=2017&_sort_desc=last_deliberation_date Throws: No such column: tog searching for sky+ http://localhost:8001/db-7596a4e/cases?_search_title=sky%2B&year__gte=1997&year__lte=2017&_sort_desc=last_deliberation_date Throws: Invalid SQL: fts5: syntax error near "" Searching for "madpakke" (including double quotes) http://localhost:8001/db-7596a4e/cases?_search_title=%22madpakke%22&year__gte=1997&year__lte=2017&_sort_desc=last_deliberation_date Returns searchresults even though 'madpakke' only appears in the fulltextindex without quotes As I said, my other plugins work just fine, and I just copied your sql_functions.py from the datasette-repo. Thanks! | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Escape_fts5_query-hookimplementation does not work with queries to standard tables 556814876 | |
741665253 | https://github.com/simonw/datasette/issues/766#issuecomment-741665253 | https://api.github.com/repos/simonw/datasette/issues/766 | MDEyOklzc3VlQ29tbWVudDc0MTY2NTI1Mw== | clausjuhl 2181410 | 2020-12-09T09:59:05Z | 2020-12-09T09:59:05Z | NONE | Hi Simon. Any news on using wildcard-searches with datasette? Thanks! | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Enable wildcard-searches by default 617323873 | |
988463455 | https://github.com/simonw/datasette/issues/1304#issuecomment-988463455 | https://api.github.com/repos/simonw/datasette/issues/1304 | IC_kwDOBm6k_c466sFf | 20after4 30934 | 2021-12-08T03:23:14Z | 2021-12-08T03:23:14Z | NONE | I actually think it would be a useful thing to add support for in datasette. It wouldn't be difficult to unwind an array of params and add the placeholders automatically. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Document how to send multiple values for "Named parameters" 863884805 | |
1613895188 | https://github.com/simonw/datasette/issues/2093#issuecomment-1613895188 | https://api.github.com/repos/simonw/datasette/issues/2093 | IC_kwDOBm6k_c5gMhYU | asg017 15178711 | 2023-06-29T22:51:53Z | 2023-06-29T22:51:53Z | CONTRIBUTOR | I agree with not liking `metadata.json` stuff in a `datasette.*` config file. Editing description of a table/column in a file like `datasette.*` seems odd to me. Though since plugin configuration currently lives in `metadata.json`, I think it should be removed from there and placed in `datasette.*`, at least for top-level config like `datasette-auth-github`'s config. Keeping `metadata.json` strictly for documentation/licensing/column units makes sense to me, but anything plugin related should be in some config file, like `datasette.*`. And ya, supporting both `datasette.*` and CLI flags makes a lot of sense to me. Any `--setting` flag should override anything in `datasette.*` for easier debugging, with possibly a warning message so people don't get confused. Same with `--port` and a port defined in `datasette.*` | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Proposal: Combine settings, metadata, static, etc. into a single `datasette.toml` File 1781530343 | |
622279374 | https://github.com/dogsheep/github-to-sqlite/issues/33#issuecomment-622279374 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/33 | MDEyOklzc3VlQ29tbWVudDYyMjI3OTM3NA== | garethr 2029 | 2020-05-01T07:12:47Z | 2020-05-01T07:12:47Z | NONE | I also go it working with: ```yaml run: echo ${{ secrets.github_token }} | github-to-sqlite auth ``` | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Fall back to authentication via ENV 609950090 | |
790198930 | https://github.com/dogsheep/google-takeout-to-sqlite/issues/4#issuecomment-790198930 | https://api.github.com/repos/dogsheep/google-takeout-to-sqlite/issues/4 | MDEyOklzc3VlQ29tbWVudDc5MDE5ODkzMA== | Btibert3 203343 | 2021-03-04T00:58:40Z | 2021-03-04T00:58:40Z | NONE | I am just seeing this sorry, yes! I will kick the tires later on tonight. My apologies for the delay. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Feature Request: Gmail 778380836 | |
777178728 | https://github.com/simonw/datasette/issues/1200#issuecomment-777178728 | https://api.github.com/repos/simonw/datasette/issues/1200 | MDEyOklzc3VlQ29tbWVudDc3NzE3ODcyOA== | simonw 9599 | 2021-02-11T03:13:59Z | 2021-02-11T03:13:59Z | OWNER | I came up with the need for this while playing with this tool: https://calands.datasettes.com/calands?sql=select%0D%0A++AsGeoJSON(geometry)%2C+*%0D%0Afrom%0D%0A++CPAD_2020a_SuperUnits%0D%0Awhere%0D%0A++PARK_NAME+like+'%25mini%25'+and%0D%0A++Intersects(GeomFromGeoJSON(%3Afreedraw)%2C+geometry)+%3D+1%0D%0A++and+CPAD_2020a_SuperUnits.rowid+in+(%0D%0A++++select%0D%0A++++++rowid%0D%0A++++from%0D%0A++++++SpatialIndex%0D%0A++++where%0D%0A++++++f_table_name+%3D+'CPAD_2020a_SuperUnits'%0D%0A++++++and+search_frame+%3D+GeomFromGeoJSON(%3Afreedraw)%0D%0A++)&freedraw={"type"%3A"MultiPolygon"%2C"coordinates"%3A[[[[-122.42202758789064%2C37.82280243352759]%2C[-122.39868164062501%2C37.823887203271454]%2C[-122.38220214843751%2C37.81846319511331]%2C[-122.35061645507814%2C37.77071473849611]%2C[-122.34924316406251%2C37.74465712069939]%2C[-122.37258911132814%2C37.703380457832374]%2C[-122.39044189453125%2C37.690340943717715]%2C[-122.41241455078126%2C37.680559803205135]%2C[-122.44262695312501%2C37.67295135774715]%2C[-122.47283935546876%2C37.67295135774715]%2C[-122.52502441406251%2C37.68382032669382]%2C[-122.53463745117189%2C37.6892542140253]%2C[-122.54699707031251%2C37.690340943717715]%2C[-122.55798339843751%2C37.72945260537781]%2C[-122.54287719726564%2C37.77831314799672]%2C[-122.49893188476564%2C37.81303878836991]%2C[-122.46185302734376%2C37.82822612280363]%2C[-122.42889404296876%2C37.82822612280363]%2C[-122.42202758789064%2C37.82280243352759]]]]} - before I fixed https://github.com/simonw/datasette-leaflet-geojson/issues/16 it was loading a LOT of maps, which felt bad. I wanted to be able to link people to that page with a hard limit on the number of rows displayed on that page. It's mainly to guard against unexpected behaviour from limit-less queries though. It's not a very high priority feature! | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | ?_size=10 option for the arbitrary query page would be useful 792890765 | |
802032152 | https://github.com/simonw/sqlite-utils/issues/159#issuecomment-802032152 | https://api.github.com/repos/simonw/sqlite-utils/issues/159 | MDEyOklzc3VlQ29tbWVudDgwMjAzMjE1Mg== | limar 1025224 | 2021-03-18T15:42:52Z | 2021-03-18T15:42:52Z | NONE | I confirm the bug. Happens for me in version 3.6. I use the call to delete all the records: `table.delete_where()` This does not delete anything. I see that `delete()` method DOES use context manager `with self.db.conn:` which should help. You may want to align the code of both methods. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | .delete_where() does not auto-commit (unlike .insert() or .upsert()) 702386948 | |
1160717735 | https://github.com/simonw/datasette/pull/1759#issuecomment-1160717735 | https://api.github.com/repos/simonw/datasette/issues/1759 | IC_kwDOBm6k_c5FLyWn | simonw 9599 | 2022-06-20T18:04:41Z | 2022-06-20T18:04:41Z | OWNER | I don't think this change needs any changes to the documentation: https://docs.datasette.io/en/stable/custom_templates.html#custom-templates | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Extract facet portions of table.html out into included templates 1275523220 | |
561022224 | https://github.com/simonw/datasette/issues/646#issuecomment-561022224 | https://api.github.com/repos/simonw/datasette/issues/646 | MDEyOklzc3VlQ29tbWVudDU2MTAyMjIyNA== | simonw 9599 | 2019-12-03T06:30:42Z | 2019-12-03T06:30:42Z | OWNER | I don't think this is possible at the moment but you're right, it totally should be. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Make database level information from metadata.json available in the index.html template 531502365 | |
590517338 | https://github.com/simonw/datasette/issues/682#issuecomment-590517338 | https://api.github.com/repos/simonw/datasette/issues/682 | MDEyOklzc3VlQ29tbWVudDU5MDUxNzMzOA== | simonw 9599 | 2020-02-24T19:51:21Z | 2020-02-24T19:51:21Z | OWNER | I filed a question / feature request with Janus about supporting timeouts for `.get()` against async queues here: https://github.com/aio-libs/janus/issues/240 I'm going to move ahead without needing that ability though. I figure SQLite writes are _fast_, and plugins can be trusted to implement just fast writes. So I'm going to support either fire-and-forget writes (they get added to the queue and a task ID is returned) or have the option to block awaiting the completion of the write (using Janus) but let callers decide which version they want. I may add optional timeouts some time in the future. I am going to make both `execute_write()` and `execute_write_fn()` awaitable functions though, for consistency with `.execute()` and to give me flexibility to change how they work in the future. I'll also add a `block=True` option to both of them which causes the function to wait for the write to be successfully executed - defaults to `False` (fire-and-forget mode). | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Mechanism for writing to database via a queue 569613563 | |
1320394127 | https://github.com/simonw/sqlite-utils/issues/510#issuecomment-1320394127 | https://api.github.com/repos/simonw/sqlite-utils/issues/510 | IC_kwDOCGYnMM5Os52P | ar-jan 1176293 | 2022-11-18T18:37:51Z | 2022-11-18T18:37:51Z | NONE | I guess it is not incorrect when it says the version is `4`, though it is confusing. Maybe it doesn't even refer to FTS4/FTS5 versions, but something else? In any case, it's not related to sqlite-utils, but SQLite itself. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Cannot enable FTS5 despite it being available 1434911255 | |
505057520 | https://github.com/simonw/datasette/issues/527#issuecomment-505057520 | https://api.github.com/repos/simonw/datasette/issues/527 | MDEyOklzc3VlQ29tbWVudDUwNTA1NzUyMA== | simonw 9599 | 2019-06-24T15:21:18Z | 2019-06-24T15:21:18Z | OWNER | I just released csvs-to-sqlite 0.9.1 with this bug fix: https://github.com/simonw/csvs-to-sqlite/releases/tag/0.9.1 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Unable to use rank when fts-table generated with csvs-to-sqlite 459936585 | |
541931047 | https://github.com/simonw/datasette/pull/595#issuecomment-541931047 | https://api.github.com/repos/simonw/datasette/issues/595 | MDEyOklzc3VlQ29tbWVudDU0MTkzMTA0Nw== | simonw 9599 | 2019-10-14T21:25:38Z | 2019-10-14T21:25:38Z | OWNER | I like the conditional dependency for the moment - maybe until 3.5 becomes officially unsupported. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | bump uvicorn to 0.9.0 to be Python-3.8 friendly 506300941 | |
1030740653 | https://github.com/simonw/sqlite-utils/issues/399#issuecomment-1030740653 | https://api.github.com/repos/simonw/sqlite-utils/issues/399 | IC_kwDOCGYnMM49b9qt | eyeseast 25778 | 2022-02-06T02:57:17Z | 2022-02-06T02:57:17Z | CONTRIBUTOR | I like the idea of having stock conversions you could import. I'd actually move them to a dedicated module (call it `sqlite_utils.conversions` or something), because it's different from other utilities. Maybe they even take configuration, or they're composable. ```python from sqlite_utils.conversions import LongitudeLatitude db["places"].insert( { "name": "London", "lng": -0.118092, "lat": 51.509865, }, conversions={"point": LongitudeLatitude("lng", "lat")}, ) ``` I would definitely use that for every CSV I get with lat/lng columns where I actually need GeoJSON. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Make it easier to insert geometries, with documentation and maybe code 1124731464 | |
1082663746 | https://github.com/simonw/datasette/issues/1692#issuecomment-1082663746 | https://api.github.com/repos/simonw/datasette/issues/1692 | IC_kwDOBm6k_c5AiCNC | simonw 9599 | 2022-03-30T06:14:39Z | 2022-03-30T06:14:51Z | OWNER | I like your design, though I think it should be `"nomodule": True` for consistency with the other options. I think `"async": True` is worth supporting too. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | [plugins][feature request]: Support additional script tag attributes when loading custom JS 1182227211 | |
913001282 | https://github.com/simonw/datasette/pull/1455#issuecomment-913001282 | https://api.github.com/repos/simonw/datasette/issues/1455 | IC_kwDOBm6k_c42a0tC | ctb 51016 | 2021-09-04T16:31:24Z | 2021-09-04T16:31:24Z | CONTRIBUTOR | I love it! maybe 'researchers' instead? Or 'scientists and researchers'? | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Add scientists to target groups 988325628 | |
784567547 | https://github.com/simonw/datasette/issues/1241#issuecomment-784567547 | https://api.github.com/repos/simonw/datasette/issues/1241 | MDEyOklzc3VlQ29tbWVudDc4NDU2NzU0Nw== | simonw 9599 | 2021-02-23T22:45:56Z | 2021-02-23T22:46:12Z | OWNER | I really like the way the Share feature on Stack Overflow works: https://stackoverflow.com/questions/18934149/how-can-i-use-postgresqls-text-column-type-in-django | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Share button for copying current URL 814595021 | |
770071568 | https://github.com/dogsheep/github-to-sqlite/issues/60#issuecomment-770071568 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/60 | MDEyOklzc3VlQ29tbWVudDc3MDA3MTU2OA== | simonw 9599 | 2021-01-29T21:56:15Z | 2021-01-29T21:56:15Z | MEMBER | I really like the way you're using pipes here - really smart. It's similar to how I build the demo database in this GitHub Actions workflow: https://github.com/dogsheep/github-to-sqlite/blob/62dfd3bc4014b108200001ef4bc746feb6f33b45/.github/workflows/deploy-demo.yml#L52-L82 `twitter-to-sqlite` actually has a mechanism for doing this kind of thing, documented at https://github.com/dogsheep/twitter-to-sqlite#providing-input-from-a-sql-query-with---sql-and---attach It lets you do things like: ``` $ twitter-to-sqlite users-lookup my.db --sql="select follower_id from following" --ids ``` Maybe I should add something similar to `github-to-sqlite`? Feels like it could be really useful. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Use Data from SQLite in other commands 797097140 | |
498840129 | https://github.com/simonw/datasette/issues/499#issuecomment-498840129 | https://api.github.com/repos/simonw/datasette/issues/499 | MDEyOklzc3VlQ29tbWVudDQ5ODg0MDEyOQ== | simonw 9599 | 2019-06-04T20:55:30Z | 2019-06-04T21:01:22Z | OWNER | I really want this too! It's one of the goals of the Datasette Library #417 concept, which I'm hoping to turn into an actual feature in the coming months. It's also going to be a major focus of my ten month JSK fellowship at Stanford, which starts in September. https://twitter.com/simonw/status/1123624552867565569 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Accessibility for non-techie newsies? 451585764 | |
754187326 | https://github.com/simonw/datasette/issues/913#issuecomment-754187326 | https://api.github.com/repos/simonw/datasette/issues/913 | MDEyOklzc3VlQ29tbWVudDc1NDE4NzMyNg== | simonw 9599 | 2021-01-04T20:03:50Z | 2021-01-04T20:03:50Z | OWNER | I renamed `--config` to `--setting` and changed it to work like this: datasette --setting sql_time_limit_ms 1000 Note the lack of colons. This actually makes colons cleaner to use for plugins - I could support this: datasette --setting datasette-insert:unsafe 1 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Mechanism for passing additional options to `datasette my.db` that affect plugins 670209331 | |
1074019047 | https://github.com/simonw/datasette/issues/526#issuecomment-1074019047 | https://api.github.com/repos/simonw/datasette/issues/526 | IC_kwDOBm6k_c5ABDrn | simonw 9599 | 2022-03-21T15:09:56Z | 2022-03-21T15:09:56Z | OWNER | I should research how much overhead creating a new connection costs - it may be that an easy way to solve this is to create A dedicated connection for the query and then close that connection at the end. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Stream all results for arbitrary SQL and canned queries 459882902 | |
1185974145 | https://github.com/simonw/sqlite-utils/issues/453#issuecomment-1185974145 | https://api.github.com/repos/simonw/sqlite-utils/issues/453 | IC_kwDOCGYnMM5GsIeB | simonw 9599 | 2022-07-15T21:52:18Z | 2022-07-15T21:52:18Z | OWNER | I should warn you that this isn't a supported API - I reserve the right to change how it works between release without a major version bump, because it's not part of the documented API surface. You'll be fine if you pin to exact versions of the library though! You may find this recently-documented function useful though: https://sqlite-utils.datasette.io/en/latest/python-api.html#reading-rows-from-a-file See: - #443 I'm going to close this issue for the moment, but if anyone wants to submit a PR that cleans up this I'll happily review it. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 'unclosed file' warning when using insert_upsert_implementation from Python 1303169663 | |
880326049 | https://github.com/simonw/datasette/issues/1396#issuecomment-880326049 | https://api.github.com/repos/simonw/datasette/issues/1396 | MDEyOklzc3VlQ29tbWVudDg4MDMyNjA0OQ== | simonw 9599 | 2021-07-15T01:50:05Z | 2021-07-15T01:50:05Z | OWNER | I think I made a mistake in this commit: https://github.com/simonw/datasette/commit/0486303b60ce2784fd2e2ecdbecf304b7d6e6659 <img width="770" alt="Explicitly_push_version_tag__refs__1281_·_simonw_datasette_0486303" src="https://user-images.githubusercontent.com/9599/125715241-dc96d147-191a-4a69-bdf0-1cb092d97330.png"> It looks like I copied `$VERSION_TAG` from here - but it's not available in the `publish.yml` flow: https://github.com/simonw/datasette/blob/0486303b60ce2784fd2e2ecdbecf304b7d6e6659/.github/workflows/push_docker_tag.yml#L18-L25 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | "invalid reference format" publishing Docker image 944903881 | |
1444474487 | https://github.com/simonw/sqlite-utils/issues/433#issuecomment-1444474487 | https://api.github.com/repos/simonw/sqlite-utils/issues/433 | IC_kwDOCGYnMM5WGO53 | mcarpenter 167893 | 2023-02-24T20:57:43Z | 2023-02-24T22:22:18Z | CONTRIBUTOR | I think I see what is happening here, although I haven't quite work out a fix yet. Usually: * `click.progressbar.render_progress()` renders the cursor invisible on each invocation (update of the bar) * When the progress bar goes out of scope, the `__exit()__` method is invoked, which calls `render_finish()` to make the cursor re-appear. (See terminal escape sequences `BEFORE_BAR` and `AFTER_BAR` in click). However the sqlite-utils `utils.file_progress` context manager wraps `click.progressbar` and yields an instance of a helper class: ``` python @contextlib.contextmanager def file_progress(file, silent=False, **kwargs): ... with click.progressbar(length=file_length, **kwargs) as bar: yield UpdateWrapper(file, bar.update) ``` The yielded `UpdateWrapper` goes out of scope quickly and `click.progressbar.__exit__()` is called. The cursor is made un-invisible. Hoewever `bar` is still live and so when the caller iterates on the yielded wrapper this invokes the bar's update method, calling `render_progress()`, each time printing the "make cursor invisible" escape code. The `progressbar.__exit__` function is not called again, so the cursor doesn't re-appear. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | CLI eats my cursor 1239034903 | |
579832857 | https://github.com/simonw/datasette/issues/662#issuecomment-579832857 | https://api.github.com/repos/simonw/datasette/issues/662 | MDEyOklzc3VlQ29tbWVudDU3OTgzMjg1Nw== | simonw 9599 | 2020-01-29T16:12:08Z | 2020-01-29T16:12:08Z | OWNER | I think I see what's happening here. Adding the new plugin isn't quite enough: the change I made to master also alters the table view code to call the new function: https://github.com/simonw/datasette/commit/3c861f363df02a59a67c59036278338e4760d2ed#diff-5e0ffd62fced7d46339b9b2cd167c2f9 If you add the escape function as a plugin in Datasette 0.33 you will have to use a custom SQL query to run it, like this: https://latest.datasette.io/fixtures?sql=select+pk%2C+text1%2C+text2%2C+%5Bname+with+.+and+spaces%5D+from+searchable+where+rowid+in+%28select+rowid+from+searchable_fts+where+searchable_fts+match+escape_fts%28%3Asearch%29%29+order+by+pk+limit+101&search=Dog Or you can hold out for Datasette 0.34 which will have this fix and will hopefully ship within the next 24 hours. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Escape_fts5_query-hookimplementation does not work with queries to standard tables 556814876 | |
1419734229 | https://github.com/simonw/sqlite-utils/issues/524#issuecomment-1419734229 | https://api.github.com/repos/simonw/sqlite-utils/issues/524 | IC_kwDOCGYnMM5Un2zV | cldellow 193185 | 2023-02-06T20:53:28Z | 2023-02-06T21:16:29Z | NONE | I think it's not currently possible: sqlite-utils requires that it be one of `integer`, `text`, `float`, `blob` ([see code](https://github.com/simonw/sqlite-utils/blob/fc221f9b62ed8624b1d2098e564f525c84497969/sqlite_utils/cli.py#L2266)) IMO, this is a bit of friction and it would be nice if it was more permissive. SQLite permits developers to use any data type when creating a table. For example, this is a perfectly cromulent sqlite session that creates a table with columns of type `baz` and `bar`: ``` sqlite> create table foo(column1 baz, column2 bar); sqlite> .schema foo CREATE TABLE foo(column1 baz, column2 bar); sqlite> select * from pragma_table_info('foo'); cid name type notnull dflt_value pk ---------- ---------- ---------- ---------- ---------- ---------- 0 column1 baz 0 0 1 column2 bar 0 0 ``` The idea is that the application developer will know what meaning to ascribe to those types. For example, I'm working on a plugin to Datasette. Dates are tricky to handle. If you have some existing rows, you can look at the values in them to know how a user is serializing the dates -- as an ISO 8601 string? An RFC 3339 string? With millisecond precision? With timezone offset? But if you don't yet have any rows, you have to guess. If the column is of type `TEXT`, you don't even know that it's meant to hold a date! In this case, my plugin will look to see if the column is of type `DATE` or `DATETIME`, and assume a certain representation when writing. Perhaps there is an argument that sqlite-utils is trying to conform to SQLite's strict mode, and that is why it limits the choices. In strict mode, SQLite requires that the data type be one of `INT`, `INTEGER`, `REAL`, `TEXT`, `BLOB`, `ANY`. But that can't be the case -- sqlite-utils supports `FLOAT`, which is not one of the valid types in strict mode, and it rejects `INT`, `REAL` and `ANY`, which _are_ valid. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Transformation type `--type DATETIME` 1572766460 | |
1293928738 | https://github.com/simonw/datasette/issues/1860#issuecomment-1293928738 | https://api.github.com/repos/simonw/datasette/issues/1860 | IC_kwDOBm6k_c5NH8ki | simonw 9599 | 2022-10-27T18:46:31Z | 2022-10-27T18:46:31Z | OWNER | I think mine has a better pattern for handling `/* ... anything in here that isn't */ ... */` | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | SQL query field can't begin by a comment 1424378012 | |
702493047 | https://github.com/simonw/datasette/issues/778#issuecomment-702493047 | https://api.github.com/repos/simonw/datasette/issues/778 | MDEyOklzc3VlQ29tbWVudDcwMjQ5MzA0Nw== | simonw 9599 | 2020-10-02T02:26:25Z | 2020-10-02T02:26:25Z | OWNER | I think this could work for arbitrary SQL queries too. Those would need querystring configuration that specifies which sorted column(s) should be used for the "next" cursor. One example: I'd like to be able to offer a paginated list of counts of values in a table - e.g. this query: https://fivethirtyeight.datasettes.com/fivethirtyeight?sql=select+replies%2C+count%28*%29+from+%5Btwitter-ratio%2Fsenators%5D+group+by+replies+order+by+count%28*%29+desc%3B That could even become a query that gets linked to from the column actions menu. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Ability to configure keyset pagination for views and queries 626211658 | |
1425974877 | https://github.com/simonw/datasette/issues/2023#issuecomment-1425974877 | https://api.github.com/repos/simonw/datasette/issues/2023 | IC_kwDOBm6k_c5U_qZd | cldellow 193185 | 2023-02-10T15:32:41Z | 2023-02-10T15:32:41Z | CONTRIBUTOR | I think this feature was removed in Datasette 0.61 and moved to a plugin. People who want hashed URLs can use the [datasette-hashed-urls](https://docs.datasette.io/en/stable/performance.html#performance-hashed-urls) plugin to achieve the same affect. It looks like you're trying to disable hashed urls, so I think you can just remove that config setting and things will work. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Error: Invalid setting 'hash_urls' in settings.json in 0.64.1 1579695809 | |
570930239 | https://github.com/simonw/sqlite-utils/issues/73#issuecomment-570930239 | https://api.github.com/repos/simonw/sqlite-utils/issues/73 | MDEyOklzc3VlQ29tbWVudDU3MDkzMDIzOQ== | simonw 9599 | 2020-01-05T17:15:18Z | 2020-01-05T17:15:18Z | OWNER | I think this is because you forgot to include a `pk=` argument. I'll change the code to throw a more useful error in this case. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | upsert_all() throws issue when upserting to empty table 545407916 | |
853567861 | https://github.com/simonw/sqlite-utils/issues/264#issuecomment-853567861 | https://api.github.com/repos/simonw/sqlite-utils/issues/264 | MDEyOklzc3VlQ29tbWVudDg1MzU2Nzg2MQ== | simonw 9599 | 2021-06-03T05:12:21Z | 2021-06-03T05:12:21Z | OWNER | I think this is more likely to happen in Datasette than in sqlite-utils - see https://github.com/simonw/datasette/issues/1356 for thoughts on this. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Supporting additional output formats, like GeoJSON 907642546 | |
1311271298 | https://github.com/simonw/datasette/issues/1880#issuecomment-1311271298 | https://api.github.com/repos/simonw/datasette/issues/1880 | IC_kwDOBm6k_c5OKGmC | simonw 9599 | 2022-11-11T06:12:29Z | 2022-11-11T06:12:29Z | OWNER | I think you may have misunderstood this feature. This is talking about the `_internal` in-memory database, which maintains a set of tables that list the databases and tables that are attached to Datasette. They're not a copy of the data itself - just a list of table names, column names and database names. You can see what that database looks like by signing in as root - running `datasette --root` and clicking the link. Or you can see an example here: - Click the button on https://latest.datasette.io/login-as-root - Now visit https://latest.datasette.io/_internal For the example instance that looks like this: <img width="697" alt="image" src="https://user-images.githubusercontent.com/9599/201275230-b6375574-17f0-4cd8-b363-0c69a5907080.png"> The two most interesting tables in there are these ones: <img width="1703" alt="image" src="https://user-images.githubusercontent.com/9599/201275343-589eb6d7-6a9f-403c-b84a-07455d936a85.png"> <img width="1670" alt="CleanShot 2022-11-10 at 22 11 23@2x" src="https://user-images.githubusercontent.com/9599/201275287-04e6c57d-3ef9-4987-9a8b-5d421a48c452.png"> As you can see, it's just the table schema itself and the columns that make up the tables. Even if you have hundreds of databases connected each with hundreds of tables this should still only add up to a few MB of RAM. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Datasette with many and large databases > Memory use 1433576351 | |
976117989 | https://github.com/simonw/datasette/issues/1522#issuecomment-976117989 | https://api.github.com/repos/simonw/datasette/issues/1522 | IC_kwDOBm6k_c46LmDl | glasnt 813732 | 2021-11-23T03:00:34Z | 2021-11-23T03:00:34Z | CONTRIBUTOR | I tried deploying the most recent version of the Dockerfile in this thread ([link to comment](https://github.com/simonw/datasette/issues/1522#issuecomment-974605128)), and after trying a few different different combinations, I was only successful when I used `--no-cpu-throttling` ("CPU Is always allocated" in the UI) Using this method, I got a very similar issue to you: The first time I'd load the site I'd get a 503. But after that first load, I didn't get the issue again. It would re-occur if the service started from cold boot. I suspect this is a race condition in the supervisord configuration. The errors I got were the same `Connection refused: AH00957: http: attempt to connect to 127.0.0.1:8001 (127.0.0.1) failed`, and that seems to indicate that `datasette` hadn't yet started. Looking at the order of logs getting back, the processes reported successfully completing loading after the first 503 was returned, so that makes me think race condition. I can replicate this locally, if I `docker run` and request `localhost:5000/prefix` _before_ I get the `datasette entered RUNNING state` message. Cloud Run wakes up when requests are received, so this test would semi-replicate that, but local docker would be the equivalent of a persistent process, hence it doesn't normally exhibit the same issues. Unfortunately supervisor/supervisor issue 122 (not linking as to prevent cross-project link spam) seems to say that dependency chaining is a feature that's been asked for for a long time, but hasn't been implemented. You could try some suggestions in that thread. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Deploy a live instance of demos/apache-proxy 1058896236 | |
809548363 | https://github.com/simonw/datasette/issues/696#issuecomment-809548363 | https://api.github.com/repos/simonw/datasette/issues/696 | MDEyOklzc3VlQ29tbWVudDgwOTU0ODM2Mw== | simonw 9599 | 2021-03-29T17:04:19Z | 2021-03-29T17:04:19Z | OWNER | I tried this just now against Datasette 0.56 with the new Dockerfile from #1249 (that uses SQLite and SpatiaLite installed with `apt-get install`) and the tests all passed. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Single failing unit test when run inside the Docker image 576722115 | |
712569695 | https://github.com/simonw/datasette/issues/782#issuecomment-712569695 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDcxMjU2OTY5NQ== | carlmjohnson 222245 | 2020-10-20T03:45:48Z | 2020-10-20T03:46:14Z | NONE | I vote against headers. It has a lot of strikes against it: poor discoverability, new developers often don’t know how to use them, makes CORS harder, makes it hard to use eg with JQ, needs ad hoc specification for each bit of metadata, etc. The only advantage of headers is that you don’t need to do .rows, but that’s actually good as a data validation step anyway—if .rows is missing assume there’s an error and do your error handling path instead of parsing the rest. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Redesign default .json format 627794879 | |
431867885 | https://github.com/simonw/datasette/issues/176#issuecomment-431867885 | https://api.github.com/repos/simonw/datasette/issues/176 | MDEyOklzc3VlQ29tbWVudDQzMTg2Nzg4NQ== | eads 634572 | 2018-10-22T15:24:57Z | 2018-10-22T15:24:57Z | NONE | I'd like this as well. It would let me access Datasette-driven projects from GatsbyJS the same way I can access Postgres DBs via Hasura. While I don't see SQLite replacing Postgres for the 50m row datasets I sometimes have to work with, there's a whole class of smaller datasets that are great with Datasette but currently would find another option. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Add GraphQL endpoint 285168503 | |
913001416 | https://github.com/simonw/datasette/pull/1455#issuecomment-913001416 | https://api.github.com/repos/simonw/datasette/issues/1455 | IC_kwDOBm6k_c42a0vI | simonw 9599 | 2021-09-04T16:32:21Z | 2021-09-04T16:32:21Z | OWNER | I'll add researchers too. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Add scientists to target groups 988325628 | |
610076073 | https://github.com/simonw/datasette/issues/717#issuecomment-610076073 | https://api.github.com/repos/simonw/datasette/issues/717 | MDEyOklzc3VlQ29tbWVudDYxMDA3NjA3Mw== | simonw 9599 | 2020-04-06T22:47:21Z | 2020-04-06T22:47:21Z | OWNER | I'm confident it's possible to create a plugin that deploys to Now v2 now. I'll do the rest of the work in a separate repo: https://github.com/simonw/datasette-publish-now | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | See if I can get Datasette working on Zeit Now v2 594189527 | |
1098548931 | https://github.com/simonw/sqlite-utils/issues/421#issuecomment-1098548931 | https://api.github.com/repos/simonw/sqlite-utils/issues/421 | IC_kwDOCGYnMM5BeobD | simonw 9599 | 2022-04-13T22:41:59Z | 2022-04-13T22:41:59Z | OWNER | I'm going to close this ticket since it looks like this is a bug in the way the Dockerfile builds Python, but I'm going to ship a fix for that issue I found so the `LD_PRELOAD` workaround above should work OK with the next release of `sqlite-utils`. Thanks for the detailed bug report! | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | "Error: near "(": syntax error" when using sqlite-utils indexes CLI 1180427792 | |
843702392 | https://github.com/simonw/sqlite-utils/pull/258#issuecomment-843702392 | https://api.github.com/repos/simonw/sqlite-utils/issues/258 | MDEyOklzc3VlQ29tbWVudDg0MzcwMjM5Mg== | simonw 9599 | 2021-05-19T02:47:37Z | 2021-05-19T02:47:37Z | OWNER | I'm going to merge this and add a test - thanks! | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Fixing insert from JSON containing strings with non-ascii characters … 868191959 | |
404565566 | https://github.com/simonw/datasette/issues/339#issuecomment-404565566 | https://api.github.com/repos/simonw/datasette/issues/339 | MDEyOklzc3VlQ29tbWVudDQwNDU2NTU2Ng== | simonw 9599 | 2018-07-12T16:08:42Z | 2018-07-12T16:08:42Z | OWNER | I'm going to turn this into an issue about better supporting the above option. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Expose SANIC_RESPONSE_TIMEOUT config option in a sensible way 340396247 | |
897996296 | https://github.com/simonw/datasette/issues/942#issuecomment-897996296 | https://api.github.com/repos/simonw/datasette/issues/942 | IC_kwDOBm6k_c41hlYI | simonw 9599 | 2021-08-12T22:01:36Z | 2021-08-12T22:01:36Z | OWNER | I'm going with `"columns": {"name-of-column": "description-of-column"}`. If I decide to make `"col"` and `"nocol"` available in metadata I'll use those as the keys in the metadata, for consistency with the existing query string parameters. I'm OK with having both `"columns": ...` and `"col": ...` keys in the metadata, even though they could be a tiny bit confusing without the documentation. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Support column descriptions in metadata.json 681334912 | |
590679273 | https://github.com/simonw/datasette/pull/683#issuecomment-590679273 | https://api.github.com/repos/simonw/datasette/issues/683 | MDEyOklzc3VlQ29tbWVudDU5MDY3OTI3Mw== | simonw 9599 | 2020-02-25T04:37:21Z | 2020-02-25T04:37:21Z | OWNER | I'm happy with this now. I'm going to merge to master. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | .execute_write() and .execute_write_fn() methods on Database 570101428 | |
744461856 | https://github.com/simonw/datasette/issues/276#issuecomment-744461856 | https://api.github.com/repos/simonw/datasette/issues/276 | MDEyOklzc3VlQ29tbWVudDc0NDQ2MTg1Ng== | robintw 296686 | 2020-12-14T14:04:57Z | 2020-12-14T14:04:57Z | NONE | I'm looking into using datasette with a database with spatialite geometry columns, and came across this issue. Has there been any progress on this since 2018? In one of my tables I'm just storing lat/lon points in a spatialite point geometry, and I've managed to make datasette-cluster-map display the points by extracting the lat and lon in SQL - using something like `select ... ST_X(location) as longitude, ST_Y(location) as latitude from Blah`. Something more 'built-in' would be great though - particularly for the tables I have that store more complex geometries. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Handle spatialite geometry columns better 324835838 | |
761179229 | https://github.com/simonw/datasette/issues/657#issuecomment-761179229 | https://api.github.com/repos/simonw/datasette/issues/657 | MDEyOklzc3VlQ29tbWVudDc2MTE3OTIyOQ== | simonw 9599 | 2021-01-15T20:24:35Z | 2021-01-15T20:24:35Z | OWNER | I'm not sure how I missed this issue but it's almost a year later and I'm finally taking a look at your Parquet work. This is yet more evidence that allowing plugins to provide their own custom `Database` objects would be a good idea. I started exploring what Datasette would like on PostgreSQL in #670 - my concern was that I would need to add a large amount of database abstraction code which would dramatically increase the complexity of the core project, but my thinking now is that it might be tractable - Datasette doesn't actually construct SQL in complex ways anywhere outside of the `TableView` class so abstracting away just that bit should be feasible. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Allow creation of virtual tables at startup 548591089 | |
623807568 | https://github.com/dogsheep/dogsheep-photos/issues/16#issuecomment-623807568 | https://api.github.com/repos/dogsheep/dogsheep-photos/issues/16 | MDEyOklzc3VlQ29tbWVudDYyMzgwNzU2OA== | simonw 9599 | 2020-05-05T02:56:06Z | 2020-05-05T02:56:06Z | MEMBER | I'm pretty sure this is what I'm after. The `groups` table has what looks like identified labels in the rows with category = 2025: <img width="1122" alt="words__groups__2_528_rows_where_where_category___2025" src="https://user-images.githubusercontent.com/9599/81031361-e0df4080-8e40-11ea-9060-6d850aa52140.png"> Then there's a `ga` table that maps groups to assets: <img width="304" alt="words__ga__633_653_rows" src="https://user-images.githubusercontent.com/9599/81031387-f48aa700-8e40-11ea-9a3d-da23903be928.png"> And an `assets` table which looks like it has one row for every one of my photos: <img width="645" alt="words__assets__40_419_rows" src="https://user-images.githubusercontent.com/9599/81031402-04a28680-8e41-11ea-8047-e9199d068563.png"> One major challenge: these UUIDs are split into two integer numbers, `uuid_0` and `uuid_1` - but the main photos database uses regular UUIDs like this: ![image](https://user-images.githubusercontent.com/9599/81031481-39164280-8e41-11ea-983b-005ced641a18.png) I need to figure out how to match up these two different UUID representations. I asked on Twitter if anyone has any ideas: https://twitter.com/simonw/status/1257500689019703296 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Import machine-learning detected labels (dog, llama etc) from Apple Photos 612287234 | |
495659567 | https://github.com/simonw/datasette/issues/486#issuecomment-495659567 | https://api.github.com/repos/simonw/datasette/issues/486 | MDEyOklzc3VlQ29tbWVudDQ5NTY1OTU2Nw== | simonw 9599 | 2019-05-24T14:41:45Z | 2019-05-24T14:41:45Z | OWNER | I'm really keen to offer this as a plugin hook once I have Datasette working on ASGI - #272 I'll hopefully have that working in the next few weeks, but in the meantime there are a couple of tricks you can use: - you can add static HTML files (no templates though) using the static route configuration options - you can link to external hosted pages using the `about_url` metadata option - you can add information to an existing page with a custom template. I do that here for example: https://russian-ira-facebook-ads.datasettes.com/ | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Ability to add extra routes and related templates 448189298 | |
655673896 | https://github.com/simonw/sqlite-utils/issues/121#issuecomment-655673896 | https://api.github.com/repos/simonw/sqlite-utils/issues/121 | MDEyOklzc3VlQ29tbWVudDY1NTY3Mzg5Ng== | simonw 9599 | 2020-07-08T18:08:11Z | 2020-07-08T18:08:11Z | OWNER | I'm with you on most of this. Completely agreed that the CLI should do everything in a transaction. The one thing I'm not keen on is forcing calling code to explicitly start a transaction, for a couple of reasons: 1. It will break all of the existing code out there 2. It doesn't match to how I most commonly use this library - as an interactive tool in a Jupyter notebook, where I'm generally working against a brand new scratch database and any errors don't actually matter So... how about this: IF you wrap your code in a `with db:` block then the `.insert()` and suchlike methods expect you to manage transactions yourself. But if you don't use the context manager they behave like they do at the moment (or maybe a bit more sensibly). That way existing code works as it does today, lazy people like me can call `.insert()` without thinking about transactions, but people writing actual production code (as opposed to Jupyter hacks) have a sensible way to take control of the transactions themselves. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | Improved (and better documented) support for transactions 652961907 |
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE [issue_comments] ( [html_url] TEXT, [issue_url] TEXT, [id] INTEGER PRIMARY KEY, [node_id] TEXT, [user] INTEGER REFERENCES [users]([id]), [created_at] TEXT, [updated_at] TEXT, [author_association] TEXT, [body] TEXT, [reactions] TEXT, [issue] INTEGER REFERENCES [issues]([id]) , [performed_via_github_app] TEXT); CREATE INDEX [idx_issue_comments_issue] ON [issue_comments] ([issue]); CREATE INDEX [idx_issue_comments_user] ON [issue_comments] ([user]);
updated_at (date) >30 ✖