github
html_url | issue_url | id | node_id | user | created_at | updated_at | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
https://github.com/simonw/datasette/issues/1720#issuecomment-1109174715 | https://api.github.com/repos/simonw/datasette/issues/1720 | 1109174715 | IC_kwDOBm6k_c5CHKm7 | 9599 | 2022-04-26T00:40:13Z | 2022-04-26T00:43:33Z | OWNER | Some of the things I'd like to use `?_extra=` for, that may or not make sense as plugins: - Performance breakdown information, maybe including explain output for a query/table - Information about the tables that were consulted in a query - imagine pulling in additional table metadata - Statistical aggregates against the full set of results. This may well be a Datasette core feature at some point in the future, but being able to provide it early as a plugin would be really cool. - For tables, what are the other tables they can join against? - Suggested facets - Facet results themselves - New custom facets I haven't thought of - though the `register_facet_classes` hook covers that already - Table schema - Table metadata - Analytics - how many times has this table been queried? Would be a plugin thing - For geospatial data, how about a GeoJSON polygon that represents the bounding box for all returned results? Effectively this is an extra aggregation. Looking at https://github-to-sqlite.dogsheep.net/github/commits.json?_labels=on&_shape=objects for inspiration. I think there's a separate potential mechanism in the future that lets you add custom columns to a table. This would affect `.csv` and the HTML presentation too, which makes it a different concept from the `?_extra=` hook that affects the JSON export (and the context that is fed to the HTML templates). | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 1215174094 | |
https://github.com/simonw/sqlite-utils/issues/421#issuecomment-1098548931 | https://api.github.com/repos/simonw/sqlite-utils/issues/421 | 1098548931 | IC_kwDOCGYnMM5BeobD | 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} | 1180427792 | |
https://github.com/simonw/datasette/issues/1692#issuecomment-1082663746 | https://api.github.com/repos/simonw/datasette/issues/1692 | 1082663746 | IC_kwDOBm6k_c5AiCNC | 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} | 1182227211 | |
https://github.com/simonw/datasette/issues/1688#issuecomment-1079582485 | https://api.github.com/repos/simonw/datasette/issues/1688 | 1079582485 | IC_kwDOBm6k_c5AWR8V | 9599 | 2022-03-26T03:15:34Z | 2022-03-26T03:15:34Z | OWNER | Yup, you're right in what you figured out here: stand-alone plugins can't currently package static assets other then using the static folder. The `datasette-plugin` cookiecutter template should make creating a Python package pretty easy though: https://github.com/simonw/datasette-plugin You can run that yourself, or you can run it using this GitHub template repository: https://github.com/simonw/datasette-plugin-template-repository | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 1181432624 | |
https://github.com/simonw/datasette/issues/526#issuecomment-1074019047 | https://api.github.com/repos/simonw/datasette/issues/526 | 1074019047 | IC_kwDOBm6k_c5ABDrn | 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} | 459882902 | |
https://github.com/simonw/sqlite-utils/issues/412#issuecomment-1059650190 | https://api.github.com/repos/simonw/sqlite-utils/issues/412 | 1059650190 | IC_kwDOCGYnMM4_KPqO | 9599 | 2022-03-05T02:04:43Z | 2022-03-05T02:04:54Z | OWNER | To be honest, I'm having second thoughts about this now mainly because the idiom for turning a generator of dicts into a DataFrame is SO simple: ```python df = pd.DataFrame(db.query("select * from articles")) ``` Given it's that simple, I'm questioning if there's any value to adding this to `sqlite-utils` at all. This likely becomes a documentation thing instead! | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 1160182768 | |
https://github.com/simonw/sqlite-utils/pull/385#issuecomment-1029285985 | https://api.github.com/repos/simonw/sqlite-utils/issues/385 | 1029285985 | IC_kwDOCGYnMM49Wahh | 9599 | 2022-02-03T18:37:48Z | 2022-02-03T18:37:48Z | OWNER | `from sqlite_utils.utils import find_spatialite` is part of the documented API already: https://sqlite-utils.datasette.io/en/3.22.1/python-api.html#finding-spatialite To avoid needing to bump the major version number to 4 to indicate a backwards incompatible change, we should keep a `from .gis import find_spatialite` line at the top of `utils.py` such that any existing code with that documented import continues to work. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 1102899312 | |
https://github.com/simonw/datasette/issues/1613#issuecomment-1021860694 | https://api.github.com/repos/simonw/datasette/issues/1613 | 1021860694 | IC_kwDOBm6k_c486FtW | 9599 | 2022-01-26T04:57:53Z | 2022-01-26T04:57:53Z | OWNER | The existing flow where you can apply filters to a table and then click "View and edit SQL" to see the query is a good starting point. Group by queries are both crucially important and difficult to assemble for beginners. Providing a way to see the query that was used by a facet (since facets are really just group-by-counts) would be very useful, which could come out of this: - #1080 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 1114628238 | |
https://github.com/simonw/datasette/issues/1608#issuecomment-1017998993 | https://api.github.com/repos/simonw/datasette/issues/1608 | 1017998993 | IC_kwDOBm6k_c48rW6R | 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} | 1109808154 | |
https://github.com/simonw/datasette/issues/1552#issuecomment-995034143 | https://api.github.com/repos/simonw/datasette/issues/1552 | 995034143 | IC_kwDOBm6k_c47TwQf | 9599 | 2021-12-15T18:02:53Z | 2021-12-15T18:02:53Z | OWNER | This is definitely a missing feature. The "different types of facet" stuff feels incomplete to me generally - this is one issue, but this one as well: - #625 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 1078702875 | |
https://github.com/simonw/datasette/issues/1549#issuecomment-991754794 | https://api.github.com/repos/simonw/datasette/issues/1549 | 991754794 | IC_kwDOBm6k_c47HPoq | 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} | 1077620955 | |
https://github.com/simonw/sqlite-utils/issues/353#issuecomment-991378346 | https://api.github.com/repos/simonw/sqlite-utils/issues/353 | 991378346 | IC_kwDOCGYnMM47Fzuq | 9599 | 2021-12-10T23:48:28Z | 2021-12-10T23:48:28Z | OWNER | One option: allow `CODE` to be a special value of `-` which means "read from standard input". It's a tiny bit of a hack but I think it would work here. If you wanted to replace a column entirely with hyphens you would still be able to do this: sqlite-utils convert my.db mytable col1 '"-"' | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 1077102934 | |
https://github.com/simonw/sqlite-utils/issues/336#issuecomment-962411119 | https://api.github.com/repos/simonw/sqlite-utils/issues/336 | 962411119 | IC_kwDOCGYnMM45XTpv | 9599 | 2021-11-06T07:21:04Z | 2021-11-06T07:21:04Z | OWNER | I've never used `DEFAULT 'CURRENT_TIMESTAMP'` myself so this one should be an interesting bug to explore. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 1044267332 | |
https://github.com/simonw/datasette/pull/1489#issuecomment-943594712 | https://api.github.com/repos/simonw/datasette/issues/1489 | 943594712 | IC_kwDOBm6k_c44PhzY | 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} | 1026379132 | |
https://github.com/simonw/datasette/pull/1487#issuecomment-942722595 | https://api.github.com/repos/simonw/datasette/issues/1487 | 942722595 | IC_kwDOBm6k_c44MM4j | 9599 | 2021-10-13T21:08:53Z | 2021-10-13T21:08:53Z | OWNER | Thanks for this! | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 1023245060 | |
https://github.com/simonw/sqlite-utils/issues/325#issuecomment-925321439 | https://api.github.com/repos/simonw/sqlite-utils/issues/325 | 925321439 | IC_kwDOCGYnMM43J0jf | 9599 | 2021-09-22T20:52:56Z | 2021-09-22T20:52:56Z | OWNER | Updated documentation: https://sqlite-utils.datasette.io/en/latest/cli.html#running-queries-directly-against-csv-or-json > If two files have the same name they will be assigned a numeric suffix: > > $ sqlite-utils memory foo/data.csv bar/data.csv "select * from data_2" | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 990844088 | |
https://github.com/simonw/sqlite-utils/issues/328#issuecomment-925296085 | https://api.github.com/repos/simonw/sqlite-utils/issues/328 | 925296085 | IC_kwDOCGYnMM43JuXV | 9599 | 2021-09-22T20:14:53Z | 2021-09-22T20:14:53Z | OWNER | The bug is in this code: https://github.com/simonw/sqlite-utils/blob/77c240df56068341561e95e4a412cbfa24dc5bc7/sqlite_utils/cli.py#L2205-L2227 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 1004613267 | |
https://github.com/simonw/datasette/pull/1455#issuecomment-913001416 | https://api.github.com/repos/simonw/datasette/issues/1455 | 913001416 | IC_kwDOBm6k_c42a0vI | 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} | 988325628 | |
https://github.com/simonw/datasette/issues/942#issuecomment-897996296 | https://api.github.com/repos/simonw/datasette/issues/942 | 897996296 | IC_kwDOBm6k_c41hlYI | 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} | 681334912 | |
https://github.com/simonw/sqlite-utils/issues/298#issuecomment-891359751 | https://api.github.com/repos/simonw/sqlite-utils/issues/298 | 891359751 | IC_kwDOCGYnMM41IRIH | 9599 | 2021-08-02T21:55:16Z | 2021-08-02T21:55:16Z | OWNER | This is a feature already! You can do this: sqlite-utils insert nl-demo.db mytable data.ndjson --nl See https://sqlite-utils.datasette.io/en/stable/cli.html#inserting-newline-delimited-json | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 951581763 | |
https://github.com/simonw/datasette/issues/1396#issuecomment-880326049 | https://api.github.com/repos/simonw/datasette/issues/1396 | 880326049 | MDEyOklzc3VlQ29tbWVudDg4MDMyNjA0OQ== | 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} | 944903881 | |
https://github.com/simonw/sqlite-utils/issues/278#issuecomment-864128489 | https://api.github.com/repos/simonw/sqlite-utils/issues/278 | 864128489 | MDEyOklzc3VlQ29tbWVudDg2NDEyODQ4OQ== | 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} | 923697888 | |
https://github.com/simonw/sqlite-utils/issues/272#issuecomment-861987651 | https://api.github.com/repos/simonw/sqlite-utils/issues/272 | 861987651 | MDEyOklzc3VlQ29tbWVudDg2MTk4NzY1MQ== | 9599 | 2021-06-16T02:27:20Z | 2021-06-16T02:27:20Z | OWNER | Solution: `sqlite-utils memory -` attempts to detect the input based on if it starts with a `{` or `[` (likely JSON) or if it doesn't use the `csv.Sniffer()` mechanism. Or you can use `sqlite-utils memory -:csv` to specifically indicate the type of input. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 921878733 | |
https://github.com/simonw/datasette/issues/1375#issuecomment-860230385 | https://api.github.com/repos/simonw/datasette/issues/1375 | 860230385 | MDEyOklzc3VlQ29tbWVudDg2MDIzMDM4NQ== | 9599 | 2021-06-13T15:37:49Z | 2021-06-13T15:37:49Z | OWNER | 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 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. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 919508498 | |
https://github.com/simonw/sqlite-utils/issues/264#issuecomment-853567861 | https://api.github.com/repos/simonw/sqlite-utils/issues/264 | 853567861 | MDEyOklzc3VlQ29tbWVudDg1MzU2Nzg2MQ== | 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} | 907642546 | |
https://github.com/simonw/datasette/issues/526#issuecomment-853567413 | https://api.github.com/repos/simonw/datasette/issues/526 | 853567413 | MDEyOklzc3VlQ29tbWVudDg1MzU2NzQxMw== | 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} | 459882902 | |
https://github.com/simonw/datasette/pull/1352#issuecomment-852673695 | https://api.github.com/repos/simonw/datasette/issues/1352 | 852673695 | MDEyOklzc3VlQ29tbWVudDg1MjY3MzY5NQ== | 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} | 908276134 | |
https://github.com/simonw/sqlite-utils/issues/253#issuecomment-843718859 | https://api.github.com/repos/simonw/sqlite-utils/issues/253 | 843718859 | MDEyOklzc3VlQ29tbWVudDg0MzcxODg1OQ== | 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} | 847423559 | |
https://github.com/simonw/sqlite-utils/pull/258#issuecomment-843702392 | https://api.github.com/repos/simonw/sqlite-utils/issues/258 | 843702392 | MDEyOklzc3VlQ29tbWVudDg0MzcwMjM5Mg== | 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} | 868191959 | |
https://github.com/simonw/datasette/issues/1286#issuecomment-812664443 | https://api.github.com/repos/simonw/datasette/issues/1286 | 812664443 | MDEyOklzc3VlQ29tbWVudDgxMjY2NDQ0Mw== | 9599 | 2021-04-02T18:52:45Z | 2021-04-02T18:52:51Z | OWNER | Idea: default to displaying single-dimension JSON arrays of strings as a comma-separated list but show the comma in a different colour - something like this: <img width="561" alt="fixtures__facetable__15_rows" src="https://user-images.githubusercontent.com/9599/113445005-dce9d480-93a9-11eb-901c-0c2fb079c150.png"> I used this HTML for the prototype (re-using `.type-int` just to get the colour): ```html <td class="col-tags type-str">tag1<span class="type-int">, </span>tag2</td> ``` | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 849220154 | |
https://github.com/simonw/datasette/issues/1284#issuecomment-810740486 | https://api.github.com/repos/simonw/datasette/issues/1284 | 810740486 | MDEyOklzc3VlQ29tbWVudDgxMDc0MDQ4Ng== | 9599 | 2021-03-31T03:57:55Z | 2021-03-31T03:57:55Z | OWNER | You're right, doing this is really hard at the moment - I'm not sure I know how I would tackle this either, and it's something I've wanted in the past! I'll have a think about this one. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 845794436 | |
https://github.com/simonw/datasette/issues/696#issuecomment-809548363 | https://api.github.com/repos/simonw/datasette/issues/696 | 809548363 | MDEyOklzc3VlQ29tbWVudDgwOTU0ODM2Mw== | 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} | 576722115 | |
https://github.com/simonw/datasette/pull/1031#issuecomment-809010713 | https://api.github.com/repos/simonw/datasette/issues/1031 | 809010713 | MDEyOklzc3VlQ29tbWVudDgwOTAxMDcxMw== | 9599 | 2021-03-29T01:46:45Z | 2021-03-29T01:46:45Z | OWNER | Sorry I didn't get to this PR sooner. I've joint-credited you in the release notes for this fix: https://docs.datasette.io/en/stable/changelog.html#v0-56 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 724369025 | |
https://github.com/simonw/datasette/pull/1260#issuecomment-808988697 | https://api.github.com/repos/simonw/datasette/issues/1260 | 808988697 | MDEyOklzc3VlQ29tbWVudDgwODk4ODY5Nw== | 9599 | 2021-03-29T00:22:21Z | 2021-03-29T00:22:21Z | OWNER | This is interesting! I've decided to apply a subset of these - the `if` and `elif` blocks are a deliberate style choice from me, because I find code clearer when it has if/else as opposed to relying on early termination. Likewise the iteration against `.keys()` on dictionaries. I like the other fixes though, I'm about to land them in a separate commit that credits you. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 831163537 | |
https://github.com/simonw/datasette/issues/1153#issuecomment-805109341 | https://api.github.com/repos/simonw/datasette/issues/1153 | 805109341 | MDEyOklzc3VlQ29tbWVudDgwNTEwOTM0MQ== | 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} | 771202454 | |
https://github.com/simonw/sqlite-utils/issues/249#issuecomment-803501756 | https://api.github.com/repos/simonw/sqlite-utils/issues/249 | 803501756 | MDEyOklzc3VlQ29tbWVudDgwMzUwMTc1Ng== | 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} | 836963850 | |
https://github.com/simonw/datasette/issues/838#issuecomment-795895436 | https://api.github.com/repos/simonw/datasette/issues/838 | 795895436 | MDEyOklzc3VlQ29tbWVudDc5NTg5NTQzNg== | 9599 | 2021-03-10T18:44:46Z | 2021-03-10T18:44:57Z | OWNER | Let's reopen this. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 637395097 | |
https://github.com/simonw/datasette/issues/1241#issuecomment-784567547 | https://api.github.com/repos/simonw/datasette/issues/1241 | 784567547 | MDEyOklzc3VlQ29tbWVudDc4NDU2NzU0Nw== | 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} | 814595021 | |
https://github.com/simonw/datasette/issues/782#issuecomment-782789598 | https://api.github.com/repos/simonw/datasette/issues/782 | 782789598 | MDEyOklzc3VlQ29tbWVudDc4Mjc4OTU5OA== | 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} | 627794879 | |
https://github.com/simonw/sqlite-utils/issues/131#issuecomment-778510528 | https://api.github.com/repos/simonw/sqlite-utils/issues/131 | 778510528 | MDEyOklzc3VlQ29tbWVudDc3ODUxMDUyOA== | 9599 | 2021-02-12T23:25:06Z | 2021-02-12T23:25:06Z | OWNER | If `-c` isn't available, maybe `-t` or `--type` would work for specifying column types: ``` sqlite-utils insert db.db images images.tsv \ --tsv \ --type id int \ --type score float ``` or ``` sqlite-utils insert db.db images images.tsv \ --tsv \ -t id int \ -t score float ``` | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 675753042 | |
https://github.com/simonw/datasette/issues/1200#issuecomment-777178728 | https://api.github.com/repos/simonw/datasette/issues/1200 | 777178728 | MDEyOklzc3VlQ29tbWVudDc3NzE3ODcyOA== | 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} | 792890765 | |
https://github.com/simonw/datasette/issues/1209#issuecomment-769455370 | https://api.github.com/repos/simonw/datasette/issues/1209 | 769455370 | MDEyOklzc3VlQ29tbWVudDc2OTQ1NTM3MA== | 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} | 795367402 | |
https://github.com/simonw/datasette/issues/657#issuecomment-761179229 | https://api.github.com/repos/simonw/datasette/issues/657 | 761179229 | MDEyOklzc3VlQ29tbWVudDc2MTE3OTIyOQ== | 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} | 548591089 | |
https://github.com/simonw/datasette/issues/93#issuecomment-754215392 | https://api.github.com/repos/simonw/datasette/issues/93 | 754215392 | MDEyOklzc3VlQ29tbWVudDc1NDIxNTM5Mg== | 9599 | 2021-01-04T20:59:20Z | 2021-01-04T21:03:14Z | OWNER | Updated `pyinstaller` recipe - lots of hidden imports needed now: ``` pip install wheel pip install datasette pyinstaller BASE=$(python -c 'import os; print(os.path.dirname(__import__("datasette").__file__))') \ pyinstaller -F \ --add-data "$BASE/templates:datasette/templates" \ --add-data "$BASE/static:datasette/static" \ --hidden-import datasette.publish \ --hidden-import datasette.publish.heroku \ --hidden-import datasette.publish.cloudrun \ --hidden-import datasette.facets \ --hidden-import datasette.sql_functions \ --hidden-import datasette.actor_auth_cookie \ --hidden-import datasette.default_permissions \ --hidden-import datasette.default_magic_parameters \ --hidden-import datasette.blob_renderer \ --hidden-import datasette.default_menu_links \ --hidden-import uvicorn \ --hidden-import uvicorn.logging \ --hidden-import uvicorn.loops \ --hidden-import uvicorn.loops.auto \ --hidden-import uvicorn.protocols \ --hidden-import uvicorn.protocols.http \ --hidden-import uvicorn.protocols.http.auto \ --hidden-import uvicorn.protocols.websockets \ --hidden-import uvicorn.protocols.websockets.auto \ --hidden-import uvicorn.lifespan \ --hidden-import uvicorn.lifespan.on \ $(which datasette) ``` | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 273944952 | |
https://github.com/simonw/datasette/issues/913#issuecomment-754187326 | https://api.github.com/repos/simonw/datasette/issues/913 | 754187326 | MDEyOklzc3VlQ29tbWVudDc1NDE4NzMyNg== | 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} | 670209331 | |
https://github.com/simonw/datasette/issues/1169#issuecomment-753653260 | https://api.github.com/repos/simonw/datasette/issues/1169 | 753653260 | MDEyOklzc3VlQ29tbWVudDc1MzY1MzI2MA== | 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} | 777677671 | |
https://github.com/simonw/datasette/issues/987#issuecomment-752714747 | https://api.github.com/repos/simonw/datasette/issues/987 | 752714747 | MDEyOklzc3VlQ29tbWVudDc1MjcxNDc0Nw== | 9599 | 2020-12-30T18:23:08Z | 2020-12-30T18:23:20Z | OWNER | In terms of "places to put your plugin content", the simplest solution I can think of is something like this: ```html <div id="plugin-content-pre-table"></div> ``` Alternative designs: - A documented JavaScript function that returns the CSS selector where plugins should put their content - A documented JavaScript function that returns a DOM node where plugins should put their content. This would allow the JavaScript to create the element if it does not already exist (though it wouldn't be obvious WHERE that element should be created) - Documented JavaScript functions for things like "append this node/HTML to the place-where-plugins-go" I think the original option - an empty `<div>` with a known `id` attribute - is the right one to go with here. It's the simplest, it's very easy for custom template authors to understand and it acknowledges that plugins may have all kinds of extra crazy stuff they want to do - like checking in that div to see if another plugin has written to it already, for example. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 712984738 | |
https://github.com/simonw/datasette/pull/1158#issuecomment-750390741 | https://api.github.com/repos/simonw/datasette/issues/1158 | 750390741 | MDEyOklzc3VlQ29tbWVudDc1MDM5MDc0MQ== | 9599 | 2020-12-23T17:05:32Z | 2020-12-23T17:05:32Z | OWNER | Thanks for this! I'm fine keeping the `os.path` stuff as is. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 773913793 | |
https://github.com/simonw/datasette/issues/1149#issuecomment-747207787 | https://api.github.com/repos/simonw/datasette/issues/1149 | 747207787 | MDEyOklzc3VlQ29tbWVudDc0NzIwNzc4Nw== | 9599 | 2020-12-17T05:06:16Z | 2020-12-17T05:06:16Z | OWNER | So, an idea: what if Datasette's default CSS applied only to elements with classes - or maybe to childen of a `body class="datasette"` element? In such a way that you could write your own custom HTML that reused elements of Datasette's CSS - the cog menu styling for example - but only on an opt-in basis? | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 769520939 | |
https://github.com/simonw/datasette/issues/1148#issuecomment-747062909 | https://api.github.com/repos/simonw/datasette/issues/1148 | 747062909 | MDEyOklzc3VlQ29tbWVudDc0NzA2MjkwOQ== | 9599 | 2020-12-16T21:51:54Z | 2020-12-16T21:51:54Z | OWNER | This is a really frustrating bug with Vercel: https://github.com/simonw/datasette-publish-vercel/issues/28 `+` characters in URLs get translated into spaces before they get to Datasette. They know about the bug and said they were working on a fix a few months ago, but looks like it's still a problem. A workaround is to avoid `+` and use `-` instead - I think this SQL query does the same thing as yours: https://aws-partners-singapore.vercel.app/partners?sql=select%0D%0A++A.launch_rank%2C%0D%0A++A.partner_info%0D%0Afrom%0D%0A++summary+A%0D%0A++INNER+JOIN+summary+B+ON+A.launch_rank+%3E%3D+B.launch_rank+-+3%0D%0A++AND+A.launch_rank+-4+%3C%3D+B.launch_rank%0D%0AWHERE%0D%0A++B.%22partner_info%22+LIKE+%27%25Palo+Alto%25%27 ```sql select A.launch_rank, A.partner_info from summary A INNER JOIN summary B ON A.launch_rank >= B.launch_rank - 3 AND A.launch_rank -4 <= B.launch_rank WHERE B."partner_info" LIKE '%Palo Alto%' ``` I've been moving projects from Vercel to Cloud Run when they run into this, but that's not a great situation to be in. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 767561886 | |
https://github.com/simonw/datasette/issues/1142#issuecomment-744563209 | https://api.github.com/repos/simonw/datasette/issues/1142 | 744563209 | MDEyOklzc3VlQ29tbWVudDc0NDU2MzIwOQ== | 9599 | 2020-12-14T16:41:11Z | 2020-12-14T16:41:11Z | OWNER | To check out and start the server: /tmp % git clone git@github.com:nitinpaul/datasette Cloning into 'datasette'... remote: Enumerating objects: 124, done. # ... datasette % python3 -m venv venv datasette % source venv/bin/activate (venv) datasette % pip install -e '.[test]' Obtaining file:///private/tmp/datasette Collecting asgiref<3.4.0,>=3.2.10 Using cached asgiref-3.3.1-py3-none-any.whl (19 kB) # ... (venv) datasette % datasette INFO: Started server process [24002] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://127.0.0.1:8001 (Press CTRL+C to quit) And to run the tests: (venv) datasette % pytest ======================================================================== test session starts ======================================================================== platform darwin -- Python 3.9.1, pytest-6.1.2, py-1.10.0, pluggy-0.13.1 SQLite: 3.34.0 rootdir: /private/tmp/datasette, configfile: pytest.ini plugins: asyncio-0.14.0, timeout-1.4.2 collected 841 items tests/test_package.py .. [ 0%] | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 763361458 | |
https://github.com/simonw/datasette/pull/1128#issuecomment-739355855 | https://api.github.com/repos/simonw/datasette/issues/1128 | 739355855 | MDEyOklzc3VlQ29tbWVudDczOTM1NTg1NQ== | 9599 | 2020-12-05T19:34:57Z | 2020-12-05T19:34:57Z | OWNER | Thanks for this! | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 756867924 | |
https://github.com/simonw/datasette/issues/111#issuecomment-738904347 | https://api.github.com/repos/simonw/datasette/issues/111 | 738904347 | MDEyOklzc3VlQ29tbWVudDczODkwNDM0Nw== | 9599 | 2020-12-04T17:16:56Z | 2020-12-04T17:16:56Z | OWNER | This is STILL a good idea. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 274615452 | |
https://github.com/simonw/datasette/issues/942#issuecomment-737463116 | https://api.github.com/repos/simonw/datasette/issues/942 | 737463116 | MDEyOklzc3VlQ29tbWVudDczNzQ2MzExNg== | 9599 | 2020-12-02T20:02:10Z | 2020-12-02T20:03:01Z | OWNER | My idea is that if you installed my proposed plugin you wouldn't need `metadata.json` at all - your metadata would instead live in a table in the connected SQLite database files - either one table per database (so the metadata can live in the same place as the data) or maybe also in a dedicated separate database file, for if you want to add metadata to an otherwise read-only database. The plugin would then provide a UI for editing that metadata - maybe by configuring some writable canned queries or maybe something more custom than that. Or you could edit the metadata by manually editing the SQLite database file (or loading data into it using a tool like [yaml-to-sqlite](https://github.com/simonw/yaml-to-sqlite)). | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 681334912 | |
https://github.com/simonw/datasette/issues/1114#issuecomment-735443626 | https://api.github.com/repos/simonw/datasette/issues/1114 | 735443626 | MDEyOklzc3VlQ29tbWVudDczNTQ0MzYyNg== | 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} | 752966476 | |
https://github.com/simonw/datasette/issues/865#issuecomment-726412057 | https://api.github.com/repos/simonw/datasette/issues/865 | 726412057 | MDEyOklzc3VlQ29tbWVudDcyNjQxMjA1Nw== | 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} | 644582921 | |
https://github.com/simonw/datasette/issues/1050#issuecomment-718342036 | https://api.github.com/repos/simonw/datasette/issues/1050 | 718342036 | MDEyOklzc3VlQ29tbWVudDcxODM0MjAzNg== | 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} | 729057388 | |
https://github.com/simonw/datasette/issues/1033#issuecomment-716048564 | https://api.github.com/repos/simonw/datasette/issues/1033 | 716048564 | MDEyOklzc3VlQ29tbWVudDcxNjA0ODU2NA== | 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} | 725099777 | |
https://github.com/simonw/datasette/pull/1043#issuecomment-715585140 | https://api.github.com/repos/simonw/datasette/issues/1043 | 715585140 | MDEyOklzc3VlQ29tbWVudDcxNTU4NTE0MA== | 9599 | 2020-10-23T20:54:29Z | 2020-10-23T20:54:29Z | OWNER | Thanks. I'll push a source release of `asgi-csrf`. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 727915394 | |
https://github.com/simonw/datasette/pull/1044#issuecomment-715584579 | https://api.github.com/repos/simonw/datasette/issues/1044 | 715584579 | MDEyOklzc3VlQ29tbWVudDcxNTU4NDU3OQ== | 9599 | 2020-10-23T20:53:01Z | 2020-10-23T20:53:01Z | OWNER | Thanks for this! | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 727916744 | |
https://github.com/simonw/datasette/issues/991#issuecomment-712317638 | https://api.github.com/repos/simonw/datasette/issues/991 | 712317638 | MDEyOklzc3VlQ29tbWVudDcxMjMxNzYzOA== | 9599 | 2020-10-19T17:30:56Z | 2020-10-19T17:30:56Z | OWNER | https://biglocal.datasettes.com/ is one of my larger Datasettes in terms of number of databases. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 714377268 | |
https://github.com/simonw/datasette/issues/778#issuecomment-702493047 | https://api.github.com/repos/simonw/datasette/issues/778 | 702493047 | MDEyOklzc3VlQ29tbWVudDcwMjQ5MzA0Nw== | 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} | 626211658 | |
https://github.com/simonw/datasette/pull/986#issuecomment-702265255 | https://api.github.com/repos/simonw/datasette/issues/986 | 702265255 | MDEyOklzc3VlQ29tbWVudDcwMjI2NTI1NQ== | 9599 | 2020-10-01T16:51:45Z | 2020-10-01T16:51:45Z | OWNER | Thanks for taking a look! The fix ended up being a little different from this because I still want to disable faceting on regular single primary keys (since faceting by those won't ever produce interesting results) - here's what I used: https://github.com/simonw/datasette/commit/5d6bc4c268f9f155e59561671f8617addd3e91bc | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 712889459 | |
https://github.com/simonw/sqlite-utils/pull/178#issuecomment-701627158 | https://api.github.com/repos/simonw/sqlite-utils/issues/178 | 701627158 | MDEyOklzc3VlQ29tbWVudDcwMTYyNzE1OA== | 9599 | 2020-09-30T20:29:11Z | 2020-09-30T20:29:11Z | OWNER | Thanks for the fix! | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 709043182 | |
https://github.com/simonw/datasette/issues/970#issuecomment-695896557 | https://api.github.com/repos/simonw/datasette/issues/970 | 695896557 | MDEyOklzc3VlQ29tbWVudDY5NTg5NjU1Nw== | 9599 | 2020-09-21T04:40:12Z | 2020-09-21T04:40:12Z | OWNER | The Python standard library has a module for this: https://docs.python.org/3/library/webbrowser.html | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 705108492 | |
https://github.com/simonw/sqlite-utils/issues/159#issuecomment-693199049 | https://api.github.com/repos/simonw/sqlite-utils/issues/159 | 693199049 | MDEyOklzc3VlQ29tbWVudDY5MzE5OTA0OQ== | 9599 | 2020-09-16T06:20:26Z | 2020-09-16T06:20:26Z | OWNER | See #121 - I need to think harder about how this all interacts with transactions. You can do this: ```python with db.conn: db["mytable"].delete_where() ``` But that should be documented and maybe rethought. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 702386948 | |
https://github.com/simonw/sqlite-utils/pull/142#issuecomment-683173375 | https://api.github.com/repos/simonw/sqlite-utils/issues/142 | 683173375 | MDEyOklzc3VlQ29tbWVudDY4MzE3MzM3NQ== | 9599 | 2020-08-28T22:29:02Z | 2020-08-28T22:29:02Z | OWNER | Yeah I think that failure is actually because there's a brand new release of Black out and it subtly changes some of the formatting rules. I'll merge this and then run Black against the entire codebase. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 688386219 | |
https://github.com/simonw/datasette/issues/942#issuecomment-675718593 | https://api.github.com/repos/simonw/datasette/issues/942 | 675718593 | MDEyOklzc3VlQ29tbWVudDY3NTcxODU5Mw== | 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} | 681334912 | |
https://github.com/simonw/sqlite-utils/issues/121#issuecomment-655673896 | https://api.github.com/repos/simonw/sqlite-utils/issues/121 | 655673896 | MDEyOklzc3VlQ29tbWVudDY1NTY3Mzg5Ng== | 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} | 652961907 | |
https://github.com/simonw/datasette/issues/877#issuecomment-652520496 | https://api.github.com/repos/simonw/datasette/issues/877 | 652520496 | MDEyOklzc3VlQ29tbWVudDY1MjUyMDQ5Ng== | 9599 | 2020-07-01T16:26:52Z | 2020-07-01T16:26:52Z | OWNER | Tokens get verified by plugins. So far there's only one: https://github.com/simonw/datasette-auth-tokens - which has you hard-coding plugins in a configuration file. I have a issue there to add support for database-backed tokens too: https://github.com/simonw/datasette-auth-tokens/issues/1 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 648421105 | |
https://github.com/simonw/datasette/pull/868#issuecomment-650600606 | https://api.github.com/repos/simonw/datasette/issues/868 | 650600606 | MDEyOklzc3VlQ29tbWVudDY1MDYwMDYwNg== | 9599 | 2020-06-27T18:44:28Z | 2020-06-27T18:44:28Z | OWNER | This is really exciting! Thanks so much for looking into this. I'm interested in moving CI for this repo over to GitHub Actions, so I'd be fine with you getting this to work as an Action rather than through Travis. If you can get it working in Travis though I'll happily land that and figure out how to convert that to GitHub Actions later on. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 646448486 | |
https://github.com/simonw/datasette/issues/757#issuecomment-624821090 | https://api.github.com/repos/simonw/datasette/issues/757 | 624821090 | MDEyOklzc3VlQ29tbWVudDYyNDgyMTA5MA== | 9599 | 2020-05-06T18:41:29Z | 2020-05-06T18:41:29Z | OWNER | OK, I just released 0.41 with that and a bunch of other stuff: https://datasette.readthedocs.io/en/latest/changelog.html#v0-41 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 612378203 | |
https://github.com/simonw/datasette/issues/758#issuecomment-624797119 | https://api.github.com/repos/simonw/datasette/issues/758 | 624797119 | MDEyOklzc3VlQ29tbWVudDYyNDc5NzExOQ== | 9599 | 2020-05-06T17:53:46Z | 2020-05-06T17:53:46Z | OWNER | It's interesting to hear from someone who's using this feature - I'm considering moving it out into a plugin #647. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 612382643 | |
https://github.com/simonw/datasette/issues/731#issuecomment-618155472 | https://api.github.com/repos/simonw/datasette/issues/731 | 618155472 | MDEyOklzc3VlQ29tbWVudDYxODE1NTQ3Mg== | 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} | 605110015 | |
https://github.com/simonw/datasette/issues/717#issuecomment-610076073 | https://api.github.com/repos/simonw/datasette/issues/717 | 610076073 | MDEyOklzc3VlQ29tbWVudDYxMDA3NjA3Mw== | 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} | 594189527 | |
https://github.com/simonw/datasette/issues/394#issuecomment-603631640 | https://api.github.com/repos/simonw/datasette/issues/394 | 603631640 | MDEyOklzc3VlQ29tbWVudDYwMzYzMTY0MA== | 9599 | 2020-03-25T04:19:08Z | 2020-03-25T04:19:08Z | OWNER | Shipped in 0.39: https://datasette.readthedocs.io/en/latest/changelog.html#v0-39 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 396212021 | |
https://github.com/simonw/datasette/issues/675#issuecomment-592399256 | https://api.github.com/repos/simonw/datasette/issues/675 | 592399256 | MDEyOklzc3VlQ29tbWVudDU5MjM5OTI1Ng== | 9599 | 2020-02-28T08:09:12Z | 2020-02-28T08:09:12Z | OWNER | Sure, `--cp` looks good to me. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 567902704 | |
https://github.com/simonw/datasette/pull/683#issuecomment-590679273 | https://api.github.com/repos/simonw/datasette/issues/683 | 590679273 | MDEyOklzc3VlQ29tbWVudDU5MDY3OTI3Mw== | 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} | 570101428 | |
https://github.com/simonw/datasette/issues/682#issuecomment-590517338 | https://api.github.com/repos/simonw/datasette/issues/682 | 590517338 | MDEyOklzc3VlQ29tbWVudDU5MDUxNzMzOA== | 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} | 569613563 | |
https://github.com/simonw/datasette/issues/675#issuecomment-589908912 | https://api.github.com/repos/simonw/datasette/issues/675 | 589908912 | MDEyOklzc3VlQ29tbWVudDU4OTkwODkxMg== | 9599 | 2020-02-22T02:38:21Z | 2020-02-22T02:38:21Z | OWNER | Interesting feature suggestion. My initial instinct was that this would be better handled using the layered nature of Docker - so build a Docker image with `datasette package` and then have a separate custom script which takes that image, copies in the extra data and outputs a new image. But... `datasette package` is already meant to be more convenient than messing around with Docker by hand like this - so actually having a `--copy` option like you describe here feels like it's within scope of what `datasette package` is meant to do. So yeah - if you're happy to design this I think it would be worth us adding. Small design suggestion: allow `--copy` to be applied multiple times, so you can do something like this: datasette package \ --copy ~/project/templates /templates \ --copy ~/project/README.md /README.md \ data.db Also since Click arguments can take multiple options I don't think you need to have the `:` in there - although if it better matches Docker's own UI it might be more consistent to have it. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 567902704 | |
https://github.com/simonw/datasette/issues/577#issuecomment-581758728 | https://api.github.com/repos/simonw/datasette/issues/577 | 581758728 | MDEyOklzc3VlQ29tbWVudDU4MTc1ODcyOA== | 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} | 497171390 | |
https://github.com/simonw/datasette/issues/658#issuecomment-580029288 | https://api.github.com/repos/simonw/datasette/issues/658 | 580029288 | MDEyOklzc3VlQ29tbWVudDU4MDAyOTI4OA== | 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} | 550293770 | |
https://github.com/simonw/datasette/issues/661#issuecomment-580028593 | https://api.github.com/repos/simonw/datasette/issues/661 | 580028593 | MDEyOklzc3VlQ29tbWVudDU4MDAyODU5Mw== | 9599 | 2020-01-30T00:30:04Z | 2020-01-30T00:30:04Z | OWNER | This has now shipped as part of Datasette 0.34: https://datasette.readthedocs.io/en/stable/changelog.html#v0-34 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 555832585 | |
https://github.com/simonw/datasette/issues/662#issuecomment-579832857 | https://api.github.com/repos/simonw/datasette/issues/662 | 579832857 | MDEyOklzc3VlQ29tbWVudDU3OTgzMjg1Nw== | 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} | 556814876 | |
https://github.com/simonw/datasette/issues/662#issuecomment-579787057 | https://api.github.com/repos/simonw/datasette/issues/662 | 579787057 | MDEyOklzc3VlQ29tbWVudDU3OTc4NzA1Nw== | 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} | 556814876 | |
https://github.com/simonw/sqlite-utils/issues/73#issuecomment-570930239 | https://api.github.com/repos/simonw/sqlite-utils/issues/73 | 570930239 | MDEyOklzc3VlQ29tbWVudDU3MDkzMDIzOQ== | 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} | 545407916 | |
https://github.com/simonw/datasette/issues/646#issuecomment-561022224 | https://api.github.com/repos/simonw/datasette/issues/646 | 561022224 | MDEyOklzc3VlQ29tbWVudDU2MTAyMjIyNA== | 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} | 531502365 | |
https://github.com/simonw/datasette/pull/595#issuecomment-552275668 | https://api.github.com/repos/simonw/datasette/issues/595 | 552275668 | MDEyOklzc3VlQ29tbWVudDU1MjI3NTY2OA== | 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} | 506300941 | |
https://github.com/simonw/datasette/issues/567#issuecomment-549665423 | https://api.github.com/repos/simonw/datasette/issues/567 | 549665423 | MDEyOklzc3VlQ29tbWVudDU0OTY2NTQyMw== | 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} | 476573875 | |
https://github.com/simonw/sqlite-utils/issues/62#issuecomment-549435364 | https://api.github.com/repos/simonw/sqlite-utils/issues/62 | 549435364 | MDEyOklzc3VlQ29tbWVudDU0OTQzNTM2NA== | 9599 | 2019-11-04T16:30:34Z | 2019-11-04T16:30:34Z | OWNER | Released as 1.12. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 500783373 | |
https://github.com/simonw/datasette/pull/595#issuecomment-541931047 | https://api.github.com/repos/simonw/datasette/issues/595 | 541931047 | MDEyOklzc3VlQ29tbWVudDU0MTkzMTA0Nw== | 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} | 506300941 | |
https://github.com/simonw/datasette/pull/557#issuecomment-511625212 | https://api.github.com/repos/simonw/datasette/issues/557 | 511625212 | MDEyOklzc3VlQ29tbWVudDUxMTYyNTIxMg== | 9599 | 2019-07-16T01:12:14Z | 2019-07-16T01:12:14Z | OWNER | This looks useful for dealing with the `The process cannot access the file because it is being used by another process` error: https://stackoverflow.com/a/28032829 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 466996584 | |
https://github.com/simonw/datasette/pull/556#issuecomment-510550279 | https://api.github.com/repos/simonw/datasette/issues/556 | 510550279 | MDEyOklzc3VlQ29tbWVudDUxMDU1MDI3OQ== | 9599 | 2019-07-11T16:07:27Z | 2019-07-11T16:07:27Z | OWNER | This is a really neat trick, thanks! | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 465773546 | |
https://github.com/simonw/datasette/pull/437#issuecomment-505087020 | https://api.github.com/repos/simonw/datasette/issues/437 | 505087020 | MDEyOklzc3VlQ29tbWVudDUwNTA4NzAyMA== | 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} | 438048318 | |
https://github.com/simonw/datasette/issues/527#issuecomment-505057520 | https://api.github.com/repos/simonw/datasette/issues/527 | 505057520 | MDEyOklzc3VlQ29tbWVudDUwNTA1NzUyMA== | 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} | 459936585 | |
https://github.com/simonw/datasette/issues/499#issuecomment-498840129 | https://api.github.com/repos/simonw/datasette/issues/499 | 498840129 | MDEyOklzc3VlQ29tbWVudDQ5ODg0MDEyOQ== | 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} | 451585764 | |
https://github.com/simonw/datasette/issues/498#issuecomment-498839428 | https://api.github.com/repos/simonw/datasette/issues/498 | 498839428 | MDEyOklzc3VlQ29tbWVudDQ5ODgzOTQyOA== | 9599 | 2019-06-04T20:53:21Z | 2019-06-04T20:53:21Z | OWNER | It does not, but that's a really great idea for a feature. One challenge here is that FTS ranking calculations take overall table statistics into account, which means it's usually not possible to combine rankings from different tables in a sensible way. But that doesn't mean it's not possible to return grouped results. I think this makes a lot of sense as a plugin. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 451513541 | |
https://github.com/simonw/sqlite-utils/issues/21#issuecomment-496786354 | https://api.github.com/repos/simonw/sqlite-utils/issues/21 | 496786354 | MDEyOklzc3VlQ29tbWVudDQ5Njc4NjM1NA== | 9599 | 2019-05-29T05:09:01Z | 2019-05-29T05:09:01Z | OWNER | Shipped this feature in sqlite-utils 1.1: https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v1-1 | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 448391492 | |
https://github.com/simonw/datasette/issues/486#issuecomment-495659567 | https://api.github.com/repos/simonw/datasette/issues/486 | 495659567 | MDEyOklzc3VlQ29tbWVudDQ5NTY1OTU2Nw== | 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} | 448189298 | |
https://github.com/simonw/datasette/issues/431#issuecomment-488555399 | https://api.github.com/repos/simonw/datasette/issues/431 | 488555399 | MDEyOklzc3VlQ29tbWVudDQ4ODU1NTM5OQ== | 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} | 432870248 | |
https://github.com/simonw/datasette/issues/419#issuecomment-473708941 | https://api.github.com/repos/simonw/datasette/issues/419 | 473708941 | MDEyOklzc3VlQ29tbWVudDQ3MzcwODk0MQ== | 9599 | 2019-03-17T19:58:11Z | 2019-03-17T19:58:11Z | OWNER | Some problems to solve: * Right now Datasette assumes it can always show the count of rows in a table, because this has been pre-calculated. If a database is mutable the pre-calculation trick no longer works, and for giant tables a `select count(*) from X` query can be expensive to run. Maybe we set a time limit on these? If time limit expires show "many rows"? * Maintaining a content hash of the table no longer makes sense if it is changing (though interestingly there's a `.sha3sum` built-in SQLite CLI command which takes a hash of the content and stays the same even through vacuum runs). Without that we need a different mechanism for calculating table colours. It also means that we can't do the special dbname-hash URL trick (see #418) at all if the database is opened as mutable. | {"total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0} | 421551434 |