home / github

Menu
  • Search all tables
  • GraphQL API

issues

Table actions
  • GraphQL API for issues

24 rows where comments = 12 and user = 9599 sorted by updated_at descending

✖
✖
✖

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: milestone, created_at (date), closed_at (date)

type 2

  • issue 22
  • pull 2

state 2

  • closed 17
  • open 7

repo 2

  • datasette 21
  • sqlite-utils 3
id node_id number title user state locked assignee milestone comments created_at updated_at ▲ closed_at author_association pull_request body repo type active_lock_reason performed_via_github_app reactions draft state_reason
787098345 MDU6SXNzdWU3ODcwOTgzNDU= 1191 Ability for plugins to collaborate when adding extra HTML to blocks in default templates simonw 9599 open 0   Datasette 1.0 3268330 12 2021-01-15T18:18:51Z 2023-09-18T06:55:52Z   OWNER  

Sometimes a plugin may want to add content to an existing default template - for example datasette-search-all adds a new search box at the top of index.html. I also want datasette-upload-csvs to add a CTA on the database.html page: https://github.com/simonw/datasette-upload-csvs/issues/18

Currently plugins can do this by providing a new version of the index.html template - but if multiple plugins try to do that only one of them will succeed.

It would be better if there were known areas of those templates which plugins could add additional content to, such that multiple plugins can use the same spot.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1191/reactions",
    "total_count": 4,
    "+1": 4,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
   
1656432059 PR_kwDOBm6k_c5NuBNG 2053 WIP new JSON for queries simonw 9599 closed 0     12 2023-04-05T23:26:15Z 2023-07-26T18:28:59Z 2023-07-26T18:26:45Z OWNER simonw/datasette/pulls/2053

Refs: - #2049

TODO:

  • [x] Read queries JSON
  • Implement error display with "ok": false and an errors key
  • Read queries HTML
  • Read queries other formats (plugins)
  • Canned read queries (dispatched to from table)
  • Write queries (a canned query thing)
  • Implement different shapes, refactoring to share code with table
  • Implement a sensible subset of extras, also refactoring to share code with table
  • Get all tests passing

:books: Documentation preview :books:: https://datasette--2053.org.readthedocs.build/en/2053/

datasette 107914493 pull    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/2053/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
1  
1219385669 I_kwDOBm6k_c5IrllF 1729 Implement ?_extra and new API design for TableView simonw 9599 open 0   Datasette 1.0a-next 8755003 12 2022-04-28T22:28:14Z 2022-12-13T05:29:07Z   OWNER  

Part of: - #262 - #1518

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1729/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
   
1435294468 I_kwDOBm6k_c5VjNsE 1882 `/db/-/create` API for creating tables simonw 9599 closed 0   Datasette 1.0a0 8658075 12 2022-11-03T21:44:32Z 2022-11-15T19:59:43Z 2022-11-15T06:00:41Z OWNER  

It really feels like this should be accompanied by a /db/-/create API for creating tables. I had to add that to sqlite-utils eventually (initially it only supported creating by passing in an example document):

https://sqlite-utils.datasette.io/en/stable/cli.html#cli-create-table

Originally posted by @simonw in https://github.com/simonw/datasette/issues/1862#issuecomment-1299073433

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1882/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1426001541 I_kwDOBm6k_c5U_w6F 1866 API for bulk inserting records into a table simonw 9599 closed 0   Datasette 1.0a0 8658075 12 2022-10-27T17:19:25Z 2022-11-15T19:59:34Z 2022-10-30T06:04:07Z OWNER  

Similar to https://github.com/simonw/datasette-insert/blob/0.8/README.md#inserting-data-and-creating-tables

I expect this to become by far the most common way that data gets into a Datasette instance - more so than the individual row API in: - #1851

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1866/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1352932716 I_kwDOCGYnMM5QpB1s 471 sqlite-utils query --functions mechanism for registering extra functions simonw 9599 closed 0   3.29 8355157 12 2022-08-27T03:57:53Z 2022-09-07T03:46:26Z 2022-08-27T05:10:57Z OWNER  

It would be really cool if you could register additional custom SQL functions for use with the sqlite-utils query command - something like this:

``` sqlite-utils data.db 'update images set domain = extract_domain(url)' --functions ' from urllib.parse import urlparse

def extract_domain(url): return urlparse(url).netloc ' ``` Every function defined in that code block would be registered with the connection, unless the name began with an underscore.

sqlite-utils 140912432 issue    
{
    "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/471/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1213683988 I_kwDOBm6k_c5IV1kU 1718 Code examples in the documentation should be formatted with Black simonw 9599 closed 0     12 2022-04-24T15:22:50Z 2022-04-24T16:24:14Z 2022-04-24T16:18:03Z OWNER  

For example on this page: https://docs.datasette.io/en/stable/writing_plugins.html#packaging-a-plugin

I wonder if there's an easy way for me to enforce this for Sphinx documentation?

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1718/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1168995756 I_kwDOBm6k_c5FrXWs 1657 Tilde encoding: use ~ instead of - for dash-encoding simonw 9599 closed 0   Datasette 1.0 3268330 12 2022-03-14T22:55:17Z 2022-03-15T18:25:11Z 2022-03-15T18:01:58Z OWNER  

Refs #1439

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1657/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1087181951 I_kwDOBm6k_c5AzRR_ 1576 Traces should include SQL executed by subtasks created with `asyncio.gather` simonw 9599 closed 0   Datasette 1.0 3268330 12 2021-12-22T20:52:02Z 2022-02-05T05:21:35Z 2022-02-05T05:19:53Z OWNER  

I tried running some parallel SQL queries using asyncio.gather() but the SQL that was executed didn't show up in the trace rendered by https://datasette.io/plugins/datasette-pretty-traces

I realized that was because traces are keyed against the current task ID, which changes when a sub-task is run using asyncio.gather or similar.

The faceting and suggest faceting queries are missing from this trace:

The reason they aren't showing up in the traces is that traces are stored just for the currently executing asyncio task ID: https://github.com/simonw/datasette/blob/ace86566b28280091b3844cf5fbecd20158e9004/datasette/tracer.py#L13-L25

This is so traces for other incoming requests don't end up mixed together. But there's no current mechanism to track async tasks that are effectively "child tasks" of the current request, and hence should be tracked the same.

https://stackoverflow.com/a/69349501/6083 suggests that you pass the task ID as an argument to the child tasks that are executed using asyncio.gather() to work around this kind of problem.

Originally posted by @simonw in https://github.com/simonw/datasette/issues/1518#issuecomment-999870993

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1576/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1109884720 I_kwDOBm6k_c5CJ38w 1609 Ensure "pip install datasette" still works with Python 3.6 simonw 9599 closed 0     12 2022-01-21T00:08:10Z 2022-01-24T19:20:09Z 2022-01-21T02:24:13Z OWNER  

Original title: Can I keep "pip install datasette" working on Python 3.6?

I dropped support for 3.6 in: - #1577

I'm getting reports that pip3 install datasette throws an error on that Python, even though I haven't made that new release yet - presumably due to lack of pinning of Uvicorn: https://twitter.com/ldodds/status/1484289475195080706

Is it possible to get pip on that version of Python to install the highest possible version of the packages that are still known to support Python 3.6?

If so, how?

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1609/reactions",
    "total_count": 1,
    "+1": 1,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
323718842 MDU6SXNzdWUzMjM3MTg4NDI= 268 Mechanism for ranking results from SQLite full-text search simonw 9599 open 0     12 2018-05-16T17:36:40Z 2022-01-13T22:21:28Z   OWNER  

This isn't particularly straight-forward - all the more reason for Datasette to implement it for you. This article is helpful: http://charlesleifer.com/blog/using-sqlite-full-text-search-with-python/

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/268/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
   
770598024 MDU6SXNzdWU3NzA1OTgwMjQ= 1152 Efficiently calculate list of databases/tables a user can view simonw 9599 open 0     12 2020-12-18T06:13:01Z 2021-12-27T23:04:31Z   OWNER  

The homepage currently performs a massive flurry of permission checks - one for each, database, table and view: https://github.com/simonw/datasette/blob/0.53/datasette/views/index.py#L21-L75

A paginated version of this is a little daunting as the permission checks would have to be carried out in every single table just to calculate the count that will be paginated.

Originally posted by @simonw in https://github.com/simonw/datasette/issues/1150#issuecomment-747864831

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1152/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
   
1055469073 I_kwDOBm6k_c4-6S4R 1513 Research: CTEs and union all to calculate facets AND query at the same time simonw 9599 closed 0     12 2021-11-16T22:26:45Z 2021-11-16T23:41:46Z 2021-11-16T23:41:46Z OWNER  

Consider this page: https://global-power-plants.datasettes.com/global-power-plants/global-power-plants?_search=plant&_facet=owner&_facet=country_long&_facet=primary_fuel

Datasette needs to run the main query for the rows on that page, a count query for the total query, then a separate query for each of those three specified facets.

This is a _search= query, so it needs to execute the FTS code once for the rows, again for the count, and then three more times for each of the facets.

Could running that query as a CTE and doing the other queries as part of the same large query produce significant speed improvements?

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/1513/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
440222719 MDU6SXNzdWU0NDAyMjI3MTk= 448 _facet_array should work against views simonw 9599 closed 0   Datasette 1.0 3268330 12 2019-05-03T21:08:04Z 2021-11-16T01:32:05Z 2021-11-16T01:19:40Z OWNER  

I created this view: https://json-view-facet-bug-demo-j7hipcg4aq-uc.a.run.app/russian-ads-8dbda00/ads_with_targets

CREATE VIEW ads_with_targets as select ads.*, json_group_array(targets.name) as target_names from ads join ad_targets on ad_targets.ad_id = ads.id join targets on ad_targets.target_id = targets.id group by ad_targets.ad_id

When I try to apply faceting by array it appears to work at first: https://json-view-facet-bug-demo-j7hipcg4aq-uc.a.run.app/russian-ads/ads_with_targets?_facet_array=target_names

But actually it's doing the wrong thing - the SQL for the facets uses rowid, but rowid is not present on views at all! These results are incorrect, and clicking to select a facet will fail to produce any rows: https://json-view-facet-bug-demo-j7hipcg4aq-uc.a.run.app/russian-ads/ads_with_targets?_facet_array=target_names&target_names__arraycontains=people_who_match%3Ainterests%3AAfrican-American+Civil+Rights+Movement+%281954%E2%80%9468%29

Here's the SQL it should be using when you select a facet (note that it does not use a rowid):

https://json-view-facet-bug-demo-j7hipcg4aq-uc.a.run.app/russian-ads?sql=select+*+from+ads_with_targets+where+id+in+%28%0D%0A++++++++++++select+ads_with_targets.id+from+ads_with_targets%2C+json_each%28ads_with_targets.target_names%29+j%0D%0A++++++++++++where+j.value+%3D+%3Ap0%0D%0A++++++++%29+limit+101&p0=people_who_match%3Ainterests%3ABlack+%28Color%29

So we need to do something a lot smarter here. I'm not sure what the fix will look like, or even if it's feasible given that views don't have a rowid to hook into so the JSON faceting SQL may have to be completely rewritten.

datasette publish cloudrun \ russian-ads.db \ --name json-view-facet-bug-demo \ --branch master \ --extra-options "--config sql_time_limit_ms:5000 --config facet_time_limit_ms:5000"

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/448/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
1005891028 I_kwDOCGYnMM479K3U 329 Rethink approach to [ and ] in column names (currently throws error) simonw 9599 closed 0     12 2021-09-23T22:14:24Z 2021-11-15T02:57:51Z 2021-11-15T02:57:51Z OWNER  

I think it's best to still keep [ and ] out of column names though. Transforming them into ( and ) seems reasonable - but should that happen here or in sqlite-utils? I think in sqlite-utils.

Originally posted by @simonw in https://github.com/simonw/datasette-app/issues/121#issuecomment-926200398

This is a rethinking of the solution to:

  • https://github.com/simonw/sqlite-utils/issues/86
sqlite-utils 140912432 issue    
{
    "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/329/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
274615452 MDU6SXNzdWUyNzQ2MTU0NTI= 111 Add “updated” to metadata simonw 9599 open 0     12 2017-11-16T18:22:20Z 2021-09-21T22:48:27Z   OWNER  

To give an indication as to when the data was last updated.

This should be a field in the metadata that is then shown on the index page and in the footer, if it is set.

Also support setting it using an option to “datasette publish” and “datasette package” - which can either be a string or can be the magic string “today” to set it to today’s date:

datasette publish file.db --updated=today
datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/111/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
   
906330187 MDU6SXNzdWU5MDYzMzAxODc= 260 Support creating descending order indexes simonw 9599 closed 0     12 2021-05-29T03:42:59Z 2021-05-29T05:01:39Z 2021-05-29T05:01:39Z OWNER  

SQLite lets you create indexes in reverse order, which can have a surprisingly big impact on performance, see https://github.com/simonw/covid-19-datasette/issues/27

I tried doing this using sqlite-utils like so, but it's didn't work:

python db["ny_times_us_counties"].create_index(["date desc"])

sqlite-utils 140912432 issue    
{
    "url": "https://api.github.com/repos/simonw/sqlite-utils/issues/260/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
421546944 MDU6SXNzdWU0MjE1NDY5NDQ= 417 Datasette Library simonw 9599 open 0     12 2019-03-15T14:30:22Z 2020-12-29T14:34:50Z   OWNER  

The ability to run Datasette in a mode where it automatically picks up new (or modified) files in a directory tree without needing to restart the server.

Suggested command:

datasette library /path/to/mydbs/
datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/417/reactions",
    "total_count": 8,
    "+1": 8,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
   
339505204 MDU6SXNzdWUzMzk1MDUyMDQ= 335 Package datasette for installation using homebrew simonw 9599 closed 0     12 2018-07-09T15:45:03Z 2020-08-11T16:54:06Z 2020-08-11T16:54:06Z OWNER  

https://docs.brew.sh/Python-for-Formula-Authors describes how.

Applications should be installed into a Python virtualenv environment rooted in libexec. This prevents the app’s Python modules from contaminating the system site-packages and vice versa.

It recommends using https://github.com/tdsmith/homebrew-pypi-poet

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/335/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
636722501 MDU6SXNzdWU2MzY3MjI1MDE= 832 Having view-table permission but NOT view-database should still grant access to /db/table simonw 9599 closed 0   Datasette 0.45 5533512 12 2020-06-11T05:12:59Z 2020-06-30T23:42:11Z 2020-06-30T23:42:11Z OWNER  

Stumbled into this while working on datasette-permissions-sql. I had granted table permissions, but the permission check wasn't even executed because the user failed the previous view-database check.

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/832/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
588108428 MDU6SXNzdWU1ODgxMDg0Mjg= 712 base_url doesn't entirely work for running Datasette inside Binder simonw 9599 closed 0     12 2020-03-26T02:25:55Z 2020-03-26T15:11:49Z 2020-03-26T14:35:43Z OWNER  

Thanks! I'm trying to launch Datasette from within a notebook using the jupyter-server-proxy and the new base_url parameter. While the assets load ok, and the breadcrumb navigation works, the facet links don't seem to use the base_url. Or have I missed something?

Originally posted by @wragge in https://github.com/simonw/datasette/issues/394#issuecomment-604166918

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/712/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed
463544206 MDU6SXNzdWU0NjM1NDQyMDY= 537 Populate "endpoint" key in ASGI scope simonw 9599 open 0     12 2019-07-03T04:54:47Z 2019-07-22T06:03:18Z   OWNER  

This is a trick used by Starlette so that other layers of ASGI middleware can see which route was selected.

They added it here: https://github.com/encode/starlette/commit/34d0097feb6f057bd050d5057df5a2f96b97384e

If Datasette supports it as well we can benefit from it if we integrate this sentry_asgi middleware (probably as a datasette-sentry plugin): https://github.com/encode/sentry-asgi/blob/c6a42d44d31f85885b79e4ee898683ecf8104971/sentry_asgi/middleware.py#L34-L35

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/537/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
   
459587155 MDExOlB1bGxSZXF1ZXN0MjkwODk3MTA0 518 Port Datasette from Sanic to ASGI + Uvicorn simonw 9599 closed 0 simonw 9599 Datasette 1.0 3268330 12 2019-06-23T15:18:42Z 2019-06-24T13:42:50Z 2019-06-24T03:13:09Z OWNER simonw/datasette/pulls/518

Most of the code here was fleshed out in comments on #272 (Port Datasette to ASGI) - this pull request will track the final pieces:

  • [x] Update test harness to more correctly simulate the raw_path issue
  • [x] Use raw_path so table names containing / can work correctly
  • [x] Bug: JSON not served with correct content-type
  • [x] Get ?_trace=1 working again
  • [x] Replacement for @app.listener("before_server_start")
  • [x] Bug: /fixtures/table%2Fwith%2Fslashes.csv?_format=json downloads as CSV
  • [x] Replace Sanic request and response objects with my own classes, so I can remove Sanic dependency
  • [x] Final code tidy-up before merging to master
datasette 107914493 pull    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/518/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
0  
337141108 MDU6SXNzdWUzMzcxNDExMDg= 332 Sanely handle Infinity/-Infinity values in JSON using ?_json_infinity=1 simonw 9599 closed 0     12 2018-06-29T21:21:27Z 2018-07-24T04:53:20Z 2018-07-24T03:08:30Z OWNER  

It turns out if you load this CSV using csvs-to-sqlite you get an Infinity value in SQLite:

name,num sasha,10 terry,Inf cathy,0.5

csvs-to-sqlite infinity-bug.csv infinity-bug.db

I deployed this using:

datasette publish now infinity-bug.db --name=datasette-infinity-bug --install=datasette-vega

Datasette outputs that as Infinity in the JSON format, which causes JavaScript errors.

Demo * https://datasette-infinity-bug.now.sh/infinity-bug-0d0224e/infinity-bug - HTML view works * https://datasette-infinity-bug.now.sh/infinity-bug-0d0224e/infinity-bug.json?_shape=array - this outputs the following:

[ { "rowid": 1, "name": "sasha", "num": 10.0 }, { "rowid": 2, "name": "terry", "num": Infinity }, { "rowid": 3, "name": "cathy", "num": 0.5 } ]

But... in Firefox that gets rendered like this:

And if you click the "Show charting options" button you get this error in the console:

SyntaxError: JSON.parse: unexpected character at line 1 column 83 of the JSON data

datasette 107914493 issue    
{
    "url": "https://api.github.com/repos/simonw/datasette/issues/332/reactions",
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  completed

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

CREATE TABLE [issues] (
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [number] INTEGER,
   [title] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [state] TEXT,
   [locked] INTEGER,
   [assignee] INTEGER REFERENCES [users]([id]),
   [milestone] INTEGER REFERENCES [milestones]([id]),
   [comments] INTEGER,
   [created_at] TEXT,
   [updated_at] TEXT,
   [closed_at] TEXT,
   [author_association] TEXT,
   [pull_request] TEXT,
   [body] TEXT,
   [repo] INTEGER REFERENCES [repos]([id]),
   [type] TEXT
, [active_lock_reason] TEXT, [performed_via_github_app] TEXT, [reactions] TEXT, [draft] INTEGER, [state_reason] TEXT);
CREATE INDEX [idx_issues_repo]
                ON [issues] ([repo]);
CREATE INDEX [idx_issues_milestone]
                ON [issues] ([milestone]);
CREATE INDEX [idx_issues_assignee]
                ON [issues] ([assignee]);
CREATE INDEX [idx_issues_user]
                ON [issues] ([user]);
Powered by Datasette · Queries took 1575.773ms · About: github-to-sqlite
  • Sort ascending
  • Sort descending
  • Facet by this
  • Hide this column
  • Show all columns
  • Show not-blank rows