issue_comments
10,495 rows sorted by issue
This data as json, CSV (advanced)
issue >30
- Redesign default .json format 55
- Show column metadata plus links for foreign keys on arbitrary query results 51
- ?_extra= support (draft) 49
- Rethink how .ext formats (v.s. ?_format=) works before 1.0 48
- Upgrade to CodeMirror 6, add SQL autocomplete 48
- JavaScript plugin hooks mechanism similar to pluggy 47
- Updated Dockerfile with SpatiaLite version 5.0 45
- Complete refactor of TableView and table.html template 45
- Authentication (and permissions) as a core concept 40
- invoke_startup() is not run in some conditions, e.g. gunicorn/uvicorn workers, breaking lots of things 36
- Deploy a live instance of demos/apache-proxy 34
- await datasette.client.get(path) mechanism for executing internal requests 33
- Maintain an in-memory SQLite table of connected databases and their tables 32
- Research: demonstrate if parallel SQL queries are worthwhile 32
- Server hang on parallel execution of queries to named in-memory databases 31
- Default API token authentication mechanism 30
- Port as many tests as possible to async def tests against ds_client 29
- link_or_copy_directory() error - Invalid cross-device link 28
- Documentation with recommendations on running Datasette in production without using Docker 27
- Optimize all those calls to index_list and foreign_key_list 27
- Ability for a canned query to write to the database 26
- table.transform() method for advanced alter table 26
- New pattern for views that return either JSON or HTML, available for plugins 26
- Proof of concept for Datasette on AWS Lambda with EFS 25
- WIP: Add Gmail takeout mbox import 25
- Make it easier to insert geometries, with documentation and maybe code 25
- DeprecationWarning: pkg_resources is deprecated as an API 25
- Redesign register_output_renderer callback 24
- API explorer tool 24
- De-tangling Metadata before Datasette 1.0 24
- …
id | html_url | issue_url | node_id | user | created_at | updated_at | author_association | body | reactions | issue ▼ | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
603570972 | https://github.com/simonw/datasette/issues/394#issuecomment-603570972 | https://api.github.com/repos/simonw/datasette/issues/394 | MDEyOklzc3VlQ29tbWVudDYwMzU3MDk3Mg== | simonw 9599 | 2020-03-25T00:17:24Z | 2020-03-25T00:17:24Z | OWNER | I got this working as a proxied instance inside Binder, building on @psychemedia's work: https://github.com/simonw/jupyterserverproxy-datasette-demo/issues/1 Now that I've seen it working there I'm going to land the pull request. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url configuration setting 396212021 | |
603631640 | https://github.com/simonw/datasette/issues/394#issuecomment-603631640 | https://api.github.com/repos/simonw/datasette/issues/394 | MDEyOklzc3VlQ29tbWVudDYwMzYzMTY0MA== | simonw 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 } |
base_url configuration setting 396212021 | |
603849245 | https://github.com/simonw/datasette/issues/394#issuecomment-603849245 | https://api.github.com/repos/simonw/datasette/issues/394 | MDEyOklzc3VlQ29tbWVudDYwMzg0OTI0NQ== | terrycojones 132978 | 2020-03-25T13:48:13Z | 2020-03-25T13:48:13Z | NONE | Great - thanks again. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url configuration setting 396212021 | |
604166918 | https://github.com/simonw/datasette/issues/394#issuecomment-604166918 | https://api.github.com/repos/simonw/datasette/issues/394 | MDEyOklzc3VlQ29tbWVudDYwNDE2NjkxOA== | wragge 127565 | 2020-03-26T00:56:30Z | 2020-03-26T00:56:30Z | CONTRIBUTOR | Thanks! I'm trying to launch Datasette from within a notebook using the jupyter-server-proxy and the new My test repository is here: https://github.com/wragge/datasette-test |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url configuration setting 396212021 | |
641889565 | https://github.com/simonw/datasette/issues/394#issuecomment-641889565 | https://api.github.com/repos/simonw/datasette/issues/394 | MDEyOklzc3VlQ29tbWVudDY0MTg4OTU2NQ== | LVerneyPEReN 58298410 | 2020-06-10T09:49:34Z | 2020-06-10T09:49:34Z | NONE | Hi, I came across this issue while looking for a way to spawn Datasette as a SQLite files viewer in JupyterLab. I found https://github.com/simonw/jupyterserverproxy-datasette-demo which seems to be the most up to date proof of concept, but it seems to be failing to list the available db (at least in the Binder demo, https://hub.gke.mybinder.org/user/simonw-jupyters--datasette-demo-uw4dmlnn/datasette/, I only have Does anyone tried to improve on this proof of concept to have a Datasette visualization for SQLite files? Thanks! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url configuration setting 396212021 | |
641908346 | https://github.com/simonw/datasette/issues/394#issuecomment-641908346 | https://api.github.com/repos/simonw/datasette/issues/394 | MDEyOklzc3VlQ29tbWVudDY0MTkwODM0Ng== | wragge 127565 | 2020-06-10T10:22:54Z | 2020-06-10T10:22:54Z | CONTRIBUTOR | There's a working demo here: https://github.com/wragge/datasette-test And if you want something that's more than just proof-of-concept, here's a notebook which does some harvesting from web archives and then displays the results using Datasette: https://nbviewer.jupyter.org/github/GLAM-Workbench/web-archives/blob/master/explore_presentations.ipynb |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
base_url configuration setting 396212021 | |
642522285 | https://github.com/simonw/datasette/issues/394#issuecomment-642522285 | https://api.github.com/repos/simonw/datasette/issues/394 | MDEyOklzc3VlQ29tbWVudDY0MjUyMjI4NQ== | LVerneyPEReN 58298410 | 2020-06-11T09:15:19Z | 2020-06-11T09:15:19Z | NONE | Hi @wragge, This looks great, thanks for the share! I refactored it into a self-contained function, binding on a random available TCP port (multi-user context). I am using subprocess API directly since the ```python import socket from signal import SIGINT from subprocess import Popen, PIPE from IPython.display import display, HTML from notebook.notebookapp import list_running_servers def get_free_tcp_port(): """ Get a free TCP port. """ tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcp.bind(('', 0)) _, port = tcp.getsockname() tcp.close() return port def datasette(database): """ Run datasette on an SQLite database. """ # Get current running servers servers = list_running_servers()
``` Ideally, I'd like some extra magic to notify users when they are leaving the closing the notebook tab and make them terminate the running datasette processes. I'll be looking for it. |
{ "total_count": 1, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 1, "rocket": 0, "eyes": 0 } |
base_url configuration setting 396212021 | |
640280741 | https://github.com/simonw/datasette/issues/395#issuecomment-640280741 | https://api.github.com/repos/simonw/datasette/issues/395 | MDEyOklzc3VlQ29tbWVudDY0MDI4MDc0MQ== | simonw 9599 | 2020-06-07T21:12:57Z | 2020-06-07T21:12:57Z | OWNER | This is a pattern I like:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Find a cleaner pattern for fixtures with arguments 396215043 | |
453324601 | https://github.com/simonw/datasette/issues/396#issuecomment-453324601 | https://api.github.com/repos/simonw/datasette/issues/396 | MDEyOklzc3VlQ29tbWVudDQ1MzMyNDYwMQ== | simonw 9599 | 2019-01-11T00:55:21Z | 2019-01-11T00:55:21Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add pragma compile_options output to /-/versions 397098882 | ||
453251589 | https://github.com/simonw/datasette/issues/397#issuecomment-453251589 | https://api.github.com/repos/simonw/datasette/issues/397 | MDEyOklzc3VlQ29tbWVudDQ1MzI1MTU4OQ== | simonw 9599 | 2019-01-10T20:59:42Z | 2019-01-10T20:59:42Z | OWNER | What version of SQLite are you seeing in Datasette? You can tell by hitting http://localhost:8001/-/versions - e.g. here: https://latest.datasette.io/-/versions My best guess is that your Python SQLite module is running an older version that doesn't support window functions. One way you can fix that is with the
That's using a fork of the official module that embeds a full recent SQLite. See this issue thread for more details: https://github.com/coleifer/pysqlite3/issues/2 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update official datasetteproject/datasette Docker container to SQLite 3.26.0 397129564 | |
453252024 | https://github.com/simonw/datasette/issues/397#issuecomment-453252024 | https://api.github.com/repos/simonw/datasette/issues/397 | MDEyOklzc3VlQ29tbWVudDQ1MzI1MjAyNA== | simonw 9599 | 2019-01-10T21:00:57Z | 2019-01-10T21:00:57Z | OWNER | Oh I just saw you're using the official Datasette docker package - yeah, that's not bundled with a recent SQLite at the moment. We should update that: https://github.com/simonw/datasette/blob/5b026115126bedbb66457767e169139146d1c9fd/Dockerfile#L9-L11 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update official datasetteproject/datasette Docker container to SQLite 3.26.0 397129564 | |
453330680 | https://github.com/simonw/datasette/issues/397#issuecomment-453330680 | https://api.github.com/repos/simonw/datasette/issues/397 | MDEyOklzc3VlQ29tbWVudDQ1MzMzMDY4MA== | simonw 9599 | 2019-01-11T01:17:11Z | 2019-01-11T01:25:33Z | OWNER | If you pull the latest image you should get the right SQLite version now:
http://0.0.0.0:8001/-/versions now gives me:
|
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update official datasetteproject/datasette Docker container to SQLite 3.26.0 397129564 | |
460901857 | https://github.com/simonw/datasette/issues/398#issuecomment-460901857 | https://api.github.com/repos/simonw/datasette/issues/398 | MDEyOklzc3VlQ29tbWVudDQ2MDkwMTg1Nw== | simonw 9599 | 2019-02-06T05:01:19Z | 2019-02-06T05:01:19Z | OWNER | I'd really like to use the content-length header here, but Sanic hasn't yet fixed the bug I filed about it: https://github.com/huge-success/sanic/issues/1194 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ensure downloading a 100+MB SQLite database file works 398011658 | |
504863901 | https://github.com/simonw/datasette/issues/398#issuecomment-504863901 | https://api.github.com/repos/simonw/datasette/issues/398 | MDEyOklzc3VlQ29tbWVudDUwNDg2MzkwMQ== | simonw 9599 | 2019-06-24T05:33:26Z | 2019-06-24T05:33:26Z | OWNER | I no longer depend on Sanic so I should be able to solve this entirely within the Datasette codebase. I need to figure out how |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ensure downloading a 100+MB SQLite database file works 398011658 | |
739357330 | https://github.com/simonw/datasette/issues/398#issuecomment-739357330 | https://api.github.com/repos/simonw/datasette/issues/398 | MDEyOklzc3VlQ29tbWVudDczOTM1NzMzMA== | simonw 9599 | 2020-12-05T19:36:27Z | 2020-12-05T19:36:27Z | OWNER | This was fixed in #749 by 88ac538b41a4753c3de9b509c3a0e13077f66182 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ensure downloading a 100+MB SQLite database file works 398011658 | |
453874429 | https://github.com/simonw/datasette/issues/399#issuecomment-453874429 | https://api.github.com/repos/simonw/datasette/issues/399 | MDEyOklzc3VlQ29tbWVudDQ1Mzg3NDQyOQ== | simonw 9599 | 2019-01-13T23:09:09Z | 2019-01-13T23:09:09Z | OWNER | It looks like there are two reasons for this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
/-/versions for official Docker image returns wrong Datasette version 398089089 | |
453876023 | https://github.com/simonw/datasette/issues/399#issuecomment-453876023 | https://api.github.com/repos/simonw/datasette/issues/399 | MDEyOklzc3VlQ29tbWVudDQ1Mzg3NjAyMw== | simonw 9599 | 2019-01-13T23:31:59Z | 2019-01-13T23:31:59Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
/-/versions for official Docker image returns wrong Datasette version 398089089 | |
453795040 | https://github.com/simonw/datasette/issues/400#issuecomment-453795040 | https://api.github.com/repos/simonw/datasette/issues/400 | MDEyOklzc3VlQ29tbWVudDQ1Mzc5NTA0MA== | simonw 9599 | 2019-01-13T01:46:30Z | 2019-01-13T01:46:30Z | OWNER | I'm really excited about this - it looks like it could be a great plugin. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette publish cloudrun plugin 398559195 | |
455230501 | https://github.com/simonw/datasette/issues/401#issuecomment-455230501 | https://api.github.com/repos/simonw/datasette/issues/401 | MDEyOklzc3VlQ29tbWVudDQ1NTIzMDUwMQ== | simonw 9599 | 2019-01-17T16:12:59Z | 2019-01-17T16:12:59Z | OWNER | Datasette-cluster-map doesn't use the new plugin configuration mechanism yet - it really should! The best example of how to use this mechanism right now is embedded in the Datasette unit tests: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
How to pass configuration to plugins? 400229984 | |
455445069 | https://github.com/simonw/datasette/issues/401#issuecomment-455445069 | https://api.github.com/repos/simonw/datasette/issues/401 | MDEyOklzc3VlQ29tbWVudDQ1NTQ0NTA2OQ== | simonw 9599 | 2019-01-18T06:49:07Z | 2019-01-18T06:49:07Z | OWNER | I've released a new version of the datasette-cluster-map plugin to illustrate how plugin configuration can work: https://github.com/simonw/datasette-cluster-map/commit/fcc86c450e3df3e6b81c41f31df458923181527a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
How to pass configuration to plugins? 400229984 | |
455520561 | https://github.com/simonw/datasette/issues/401#issuecomment-455520561 | https://api.github.com/repos/simonw/datasette/issues/401 | MDEyOklzc3VlQ29tbWVudDQ1NTUyMDU2MQ== | dazzag24 1055831 | 2019-01-18T11:48:13Z | 2019-01-18T11:48:13Z | NONE | Thanks. I'll take a look at your changes. I must admit I was struggling to see how to pass info from the python code in init.py into the javascript document.addEventListener function. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
How to pass configuration to plugins? 400229984 | |
455223551 | https://github.com/simonw/datasette/issues/402#issuecomment-455223551 | https://api.github.com/repos/simonw/datasette/issues/402 | MDEyOklzc3VlQ29tbWVudDQ1NTIyMzU1MQ== | simonw 9599 | 2019-01-17T15:55:06Z | 2019-01-17T15:55:06Z | OWNER | It's new in SQLite 3.26.0 so I will need to figure out how to only apply it in that version or higher. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use SQLITE_DBCONFIG_DEFENSIVE plus other recommendations from SQLite security docs 400340905 | |
455224327 | https://github.com/simonw/datasette/issues/402#issuecomment-455224327 | https://api.github.com/repos/simonw/datasette/issues/402 | MDEyOklzc3VlQ29tbWVudDQ1NTIyNDMyNw== | simonw 9599 | 2019-01-17T15:56:57Z | 2019-01-17T15:56:57Z | OWNER | https://sqlite.org/security.html has other recommmendations for apps that accept SQLite files from untrusted sources that we should apply. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use SQLITE_DBCONFIG_DEFENSIVE plus other recommendations from SQLite security docs 400340905 | |
455231411 | https://github.com/simonw/datasette/issues/402#issuecomment-455231411 | https://api.github.com/repos/simonw/datasette/issues/402 | MDEyOklzc3VlQ29tbWVudDQ1NTIzMTQxMQ== | simonw 9599 | 2019-01-17T16:15:21Z | 2019-01-17T16:15:21Z | OWNER | Unfortunately it looks like there isn't currently a mechanism in the Python sqlite3 library for setting configuration flags like SQLITE_DBCONFIG_DEFENSIVE |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use SQLITE_DBCONFIG_DEFENSIVE plus other recommendations from SQLite security docs 400340905 | |
455445392 | https://github.com/simonw/datasette/issues/403#issuecomment-455445392 | https://api.github.com/repos/simonw/datasette/issues/403 | MDEyOklzc3VlQ29tbWVudDQ1NTQ0NTM5Mg== | simonw 9599 | 2019-01-18T06:51:14Z | 2019-01-18T06:51:14Z | OWNER | I talk about that a bit here: https://simonwillison.net/2018/Oct/4/datasette-ideas/#Bundling_the_data_with_the_code One of the key ideas behind Datasette is that if your data is read-only you can package it up with the rest of your code - so the normal limitations that apply with hosting services like now.sh no longer prevent you from including a database. The SQLite database is just another static binary file that gets packaged up as part of your deployment. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
How does persistence work? 400511206 | |
455752238 | https://github.com/simonw/datasette/issues/403#issuecomment-455752238 | https://api.github.com/repos/simonw/datasette/issues/403 | MDEyOklzc3VlQ29tbWVudDQ1NTc1MjIzOA== | ccorcos 1794527 | 2019-01-19T05:47:55Z | 2019-01-19T05:47:55Z | NONE | Ah. That makes much more sense. Interesting approach. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
How does persistence work? 400511206 | |
457976864 | https://github.com/simonw/datasette/pull/404#issuecomment-457976864 | https://api.github.com/repos/simonw/datasette/issues/404 | MDEyOklzc3VlQ29tbWVudDQ1Nzk3Njg2NA== | simonw 9599 | 2019-01-28T01:56:55Z | 2019-01-28T01:56:55Z | OWNER | This failed in Python 3.5:
It looks like this is caused by this feature detection code: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Experiment: run Jinja in async mode 403499298 | |
552276277 | https://github.com/simonw/datasette/pull/404#issuecomment-552276277 | https://api.github.com/repos/simonw/datasette/issues/404 | MDEyOklzc3VlQ29tbWVudDU1MjI3NjI3Nw== | simonw 9599 | 2019-11-11T03:13:09Z | 2019-11-11T03:13:09Z | OWNER | 622 will drop 3.5 support. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Experiment: run Jinja in async mode 403499298 | |
552735296 | https://github.com/simonw/datasette/pull/404#issuecomment-552735296 | https://api.github.com/repos/simonw/datasette/issues/404 | MDEyOklzc3VlQ29tbWVudDU1MjczNTI5Ng== | simonw 9599 | 2019-11-12T05:02:13Z | 2019-11-12T05:02:13Z | OWNER | Closing this because it was written against Sanic. #628 tracks future work on this topic. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Experiment: run Jinja in async mode 403499298 | |
457975075 | https://github.com/simonw/datasette/issues/405#issuecomment-457975075 | https://api.github.com/repos/simonw/datasette/issues/405 | MDEyOklzc3VlQ29tbWVudDQ1Nzk3NTA3NQ== | simonw 9599 | 2019-01-28T01:41:51Z | 2019-01-28T01:41:51Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
.json?_nl=on option for exporting newline-delimited JSON 403617881 | ||
457975857 | https://github.com/simonw/datasette/issues/405#issuecomment-457975857 | https://api.github.com/repos/simonw/datasette/issues/405 | MDEyOklzc3VlQ29tbWVudDQ1Nzk3NTg1Nw== | simonw 9599 | 2019-01-28T01:48:37Z | 2019-01-28T01:49:00Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
.json?_nl=on option for exporting newline-delimited JSON 403617881 | ||
457978729 | https://github.com/simonw/sqlite-utils/issues/6#issuecomment-457978729 | https://api.github.com/repos/simonw/sqlite-utils/issues/6 | MDEyOklzc3VlQ29tbWVudDQ1Nzk3ODcyOQ== | simonw 9599 | 2019-01-28T02:12:19Z | 2019-01-28T02:12:19Z | OWNER | Will need to solve #7 for this to become truly efficient. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"sqlite-utils insert" should support newline-delimited JSON 403624090 | |
457980966 | https://github.com/simonw/sqlite-utils/issues/7#issuecomment-457980966 | https://api.github.com/repos/simonw/sqlite-utils/issues/7 | MDEyOklzc3VlQ29tbWVudDQ1Nzk4MDk2Ng== | simonw 9599 | 2019-01-28T02:29:32Z | 2019-01-28T02:29:32Z | OWNER | Remember to remove this TODO (and turn the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
.insert_all() should accept a generator and process it efficiently 403625674 | |
458011885 | https://github.com/simonw/sqlite-utils/issues/7#issuecomment-458011885 | https://api.github.com/repos/simonw/sqlite-utils/issues/7 | MDEyOklzc3VlQ29tbWVudDQ1ODAxMTg4NQ== | simonw 9599 | 2019-01-28T06:25:48Z | 2019-01-28T06:25:48Z | OWNER | Re-opening for the second bit involving the cli tool. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
.insert_all() should accept a generator and process it efficiently 403625674 | |
458011906 | https://github.com/simonw/sqlite-utils/issues/7#issuecomment-458011906 | https://api.github.com/repos/simonw/sqlite-utils/issues/7 | MDEyOklzc3VlQ29tbWVudDQ1ODAxMTkwNg== | simonw 9599 | 2019-01-28T06:25:55Z | 2019-01-28T06:25:55Z | OWNER | I tested this with a script called Then I ran this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
.insert_all() should accept a generator and process it efficiently 403625674 | |
464341721 | https://github.com/simonw/sqlite-utils/issues/8#issuecomment-464341721 | https://api.github.com/repos/simonw/sqlite-utils/issues/8 | MDEyOklzc3VlQ29tbWVudDQ2NDM0MTcyMQ== | psychemedia 82988 | 2019-02-16T12:08:41Z | 2019-02-16T12:08:41Z | NONE | We also get an error if a column name contains a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Problems handling column names containing spaces or - 403922644 | |
466695500 | https://github.com/simonw/sqlite-utils/issues/8#issuecomment-466695500 | https://api.github.com/repos/simonw/sqlite-utils/issues/8 | MDEyOklzc3VlQ29tbWVudDQ2NjY5NTUwMA== | simonw 9599 | 2019-02-23T21:09:03Z | 2019-02-23T21:09:03Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Problems handling column names containing spaces or - 403922644 | ||
482994231 | https://github.com/simonw/sqlite-utils/issues/8#issuecomment-482994231 | https://api.github.com/repos/simonw/sqlite-utils/issues/8 | MDEyOklzc3VlQ29tbWVudDQ4Mjk5NDIzMQ== | psychemedia 82988 | 2019-04-14T15:04:07Z | 2019-04-14T15:29:33Z | NONE | PLEASE IGNORE THE BELOW... I did a package update and rebuilt the kernel I was working in... may just have been an old version of sqlite_utils, seems to be working now. (Too many containers / too many environments!) Has an issue been reintroduced here with FTS? eg I'm getting an error thrown by spaces in column names here: ``` /usr/local/lib/python3.7/site-packages/sqlite_utils/db.py in insert_all(self, records, pk, foreign_keys, upsert, batch_size, column_order) def enable_fts(self, columns, fts_version="FTS5"): --> 329 "Enables FTS on the specified columns" 330 sql = """ 331 CREATE VIRTUAL TABLE "{table}_fts" USING {fts_version} ( ``` when trying an Also, if a col has a ``` /usr/local/lib/python3.7/site-packages/sqlite_utils/db.py in insert_all(self, records, pk, foreign_keys, upsert, batch_size, column_order) 327 jsonify_if_needed(record.get(key, None)) for key in all_columns 328 ) --> 329 result = self.db.conn.execute(sql, values) 330 self.db.conn.commit() 331 self.last_id = result.lastrowid OperationalError: near ".": syntax error ``` (Can't post a worked minimal example right now; racing trying to build something against a live timing screen that will stop until next weekend in an hour or two...) PS Hmmm I did a test and they seem to work; I must be messing up s/where else... ``` import sqlite3 from sqlite_utils import Database dbname='testingDB_sqlite_utils.db' !rm $dbnameconn = sqlite3.connect(dbname, timeout=10) Setup database tablesc = conn.cursor() setup=''' CREATE TABLE IF NOT EXISTS "test1" ( "NO" INTEGER, "NAME" TEXT ); CREATE TABLE IF NOT EXISTS "test2" (
"NO" INTEGER,
CREATE TABLE IF NOT EXISTS "test3" (
"NO" INTEGER,
c.executescript(setup) DB = Database(conn) import pandas as pd df1 = pd.DataFrame({'NO':[1,2],'NAME':['a','b']}) DB['test1'].insert_all(df1.to_dict(orient='records')) df2 = pd.DataFrame({'NO':[1,2],'TIME OF DAY':['early on','late']}) DB['test2'].insert_all(df2.to_dict(orient='records')) df3 = pd.DataFrame({'NO':[1,2],'AVG. SPEED (MPH)':['123.3','123.4']}) DB['test3'].insert_all(df3.to_dict(orient='records')) ``` all seem to work ok. I'm still getting errors in my set up though, which is not too different to the text cases? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Problems handling column names containing spaces or - 403922644 | |
530985388 | https://github.com/simonw/datasette/issues/406#issuecomment-530985388 | https://api.github.com/repos/simonw/datasette/issues/406 | MDEyOklzc3VlQ29tbWVudDUzMDk4NTM4OA== | simonw 9599 | 2019-09-12T20:08:22Z | 2019-09-12T20:08:22Z | OWNER | This is particularly noticeable with databases produced by |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support nullable foreign keys in _labels mode 406055201 | |
549087507 | https://github.com/simonw/datasette/issues/406#issuecomment-549087507 | https://api.github.com/repos/simonw/datasette/issues/406 | MDEyOklzc3VlQ29tbWVudDU0OTA4NzUwNw== | simonw 9599 | 2019-11-02T22:39:28Z | 2019-11-02T22:39:28Z | OWNER | Demo of the fix: https://latest.datasette.io/fixtures/foreign_key_references |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support nullable foreign keys in _labels mode 406055201 | |
460897973 | https://github.com/simonw/datasette/pull/407#issuecomment-460897973 | https://api.github.com/repos/simonw/datasette/issues/407 | MDEyOklzc3VlQ29tbWVudDQ2MDg5Nzk3Mw== | simonw 9599 | 2019-02-06T04:31:30Z | 2019-02-06T04:31:30Z | OWNER | This helped my figure out what to do: https://github.com/heroku/heroku-builds/issues/36 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Heroku --include-vcs-ignore 407073223 | |
472844001 | https://github.com/simonw/datasette/issues/409#issuecomment-472844001 | https://api.github.com/repos/simonw/datasette/issues/409 | MDEyOklzc3VlQ29tbWVudDQ3Mjg0NDAwMQ== | Uninen 43100 | 2019-03-14T13:04:20Z | 2019-03-14T13:04:42Z | NONE | It seems this affects the Datasette Publish -site as well: https://github.com/simonw/datasette-publish-support/issues/3 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Zeit API v1 does not work for new users - need to migrate to v2 408376825 | |
472875713 | https://github.com/simonw/datasette/issues/409#issuecomment-472875713 | https://api.github.com/repos/simonw/datasette/issues/409 | MDEyOklzc3VlQ29tbWVudDQ3Mjg3NTcxMw== | michaelmcandrew 209967 | 2019-03-14T14:14:39Z | 2019-03-14T14:14:39Z | NONE | also linking this zeit issue in case it is helpful: https://github.com/zeit/now-examples/issues/163#issuecomment-440125769 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Zeit API v1 does not work for new users - need to migrate to v2 408376825 | |
609874145 | https://github.com/simonw/datasette/issues/409#issuecomment-609874145 | https://api.github.com/repos/simonw/datasette/issues/409 | MDEyOklzc3VlQ29tbWVudDYwOTg3NDE0NQ== | simonw 9599 | 2020-04-06T15:44:46Z | 2020-04-06T15:44:46Z | OWNER | Closing this in favour of #717. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Zeit API v1 does not work for new users - need to migrate to v2 408376825 | |
482434925 | https://github.com/simonw/datasette/issues/410#issuecomment-482434925 | https://api.github.com/repos/simonw/datasette/issues/410 | MDEyOklzc3VlQ29tbWVudDQ4MjQzNDkyNQ== | simonw 9599 | 2019-04-12T04:42:27Z | 2019-04-12T04:42:27Z | OWNER | You can pass multiple databases as command-line arguments, and each one will be loaded. For example:
Then the URLs should be: http://127.0.0.1:8001/mydb for the first one http://127.0.0.1:8001/otherdb for the second one |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
How to setup a multi database environment? 408518024 | |
473156905 | https://github.com/simonw/datasette/issues/411#issuecomment-473156905 | https://api.github.com/repos/simonw/datasette/issues/411 | MDEyOklzc3VlQ29tbWVudDQ3MzE1NjkwNQ== | simonw 9599 | 2019-03-15T04:42:58Z | 2019-03-15T04:42:58Z | OWNER | Have you tried this?
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
How to pass named parameter into spatialite MakePoint() function 410384988 | |
519065799 | https://github.com/simonw/datasette/issues/411#issuecomment-519065799 | https://api.github.com/repos/simonw/datasette/issues/411 | MDEyOklzc3VlQ29tbWVudDUxOTA2NTc5OQ== | dazzag24 1055831 | 2019-08-07T12:00:36Z | 2019-08-07T12:00:36Z | NONE | Hi, Apologies for the long delay. I tried your suggesting escaping approach:
Anything else you suggest I try? Thanks |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
How to pass named parameter into spatialite MakePoint() function 410384988 | |
1779267468 | https://github.com/simonw/datasette/issues/411#issuecomment-1779267468 | https://api.github.com/repos/simonw/datasette/issues/411 | IC_kwDOBm6k_c5qDXeM | hcarter333 363004 | 2023-10-25T13:23:04Z | 2023-10-25T13:23:04Z | NONE | Using the Counties example, I was able to pull out the MakePoint method as MakePoint(cast(rm_rnb_history_pres.rx_lng as float), cast(rm_rnb_history_pres.rx_lat as float)) as geometry which worked, giving me a geometry column. gave I believe it's the cast to float that does the trick. Prior to using the cast, I also received a 'wrong number of arguments' eror. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
How to pass named parameter into spatialite MakePoint() function 410384988 | |
466794069 | https://github.com/simonw/sqlite-utils/issues/10#issuecomment-466794069 | https://api.github.com/repos/simonw/sqlite-utils/issues/10 | MDEyOklzc3VlQ29tbWVudDQ2Njc5NDA2OQ== | simonw 9599 | 2019-02-24T16:55:37Z | 2019-02-24T16:55:37Z | OWNER | This was fixed by https://github.com/simonw/sqlite-utils/commit/228d595f7d10994f34e948888093c2cd290267c4 - see also #8 ``` <Table test> ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Error in upsert if column named 'order' 411066700 | |
473158506 | https://github.com/simonw/datasette/issues/412#issuecomment-473158506 | https://api.github.com/repos/simonw/datasette/issues/412 | MDEyOklzc3VlQ29tbWVudDQ3MzE1ODUwNg== | simonw 9599 | 2019-03-15T04:53:53Z | 2019-03-15T04:53:53Z | OWNER | I've been thinking about how Datasette instances could query each other for a while - it's a really interesting direction. There are some tricky problems to solve to get this to work. There's a SQLite mechanism called "virtual table functions" which can implement things like this, but it's not supported by Python's https://github.com/coleifer/sqlite-vtfunc is a library that enables this feature. I experimented with using that to implement a function that scrapes HTML content (with an eye to accessing data from other APIs and Datasette instances) a while ago: https://github.com/coleifer/sqlite-vtfunc/issues/6 The bigger challenge is how to get this kind of thing to behave well within a Python 3 async environment. I have some ideas here but they're going to require some very crafty engineering. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Linked Data(sette) 411257981 | |
474282321 | https://github.com/simonw/datasette/issues/412#issuecomment-474282321 | https://api.github.com/repos/simonw/datasette/issues/412 | MDEyOklzc3VlQ29tbWVudDQ3NDI4MjMyMQ== | psychemedia 82988 | 2019-03-19T10:09:46Z | 2019-03-19T10:09:46Z | CONTRIBUTOR | Does this also relate to https://github.com/simonw/datasette/issues/283 and the ability to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Linked Data(sette) 411257981 | |
466695672 | https://github.com/simonw/sqlite-utils/issues/11#issuecomment-466695672 | https://api.github.com/repos/simonw/sqlite-utils/issues/11 | MDEyOklzc3VlQ29tbWVudDQ2NjY5NTY3Mg== | simonw 9599 | 2019-02-23T21:10:23Z | 2019-02-23T21:10:23Z | OWNER | Rough sketch: ``` +try: + import numpy +except ImportError: + numpy = None + Column = namedtuple( "Column", ("cid", "name", "type", "notnull", "default_value", "is_pk") ) @@ -70,6 +79,22 @@ class Database: datetime.time: "TEXT", None.class: "TEXT", } + # If numpy is available, add more types + if numpy: + col_type_mapping.update({ + numpy.int8: "INTEGER", + numpy.int16: "INTEGER", + numpy.int32: "INTEGER", + numpy.int64: "INTEGER", + numpy.uint8: "INTEGER", + numpy.uint16: "INTEGER", + numpy.uint32: "INTEGER", + numpy.uint64: "INTEGER", + numpy.float16: "FLOAT", + numpy.float32: "FLOAT", + numpy.float64: "FLOAT", + numpy.float128: "FLOAT", + }) ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Detect numpy types when creating tables 413740684 | |
466695695 | https://github.com/simonw/sqlite-utils/issues/11#issuecomment-466695695 | https://api.github.com/repos/simonw/sqlite-utils/issues/11 | MDEyOklzc3VlQ29tbWVudDQ2NjY5NTY5NQ== | simonw 9599 | 2019-02-23T21:10:35Z | 2019-02-23T21:10:35Z | OWNER | Need to test this both with and without |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Detect numpy types when creating tables 413740684 | |
466732039 | https://github.com/simonw/sqlite-utils/issues/13#issuecomment-466732039 | https://api.github.com/repos/simonw/sqlite-utils/issues/13 | MDEyOklzc3VlQ29tbWVudDQ2NjczMjAzOQ== | simonw 9599 | 2019-02-24T04:07:57Z | 2019-02-24T04:07:57Z | OWNER | Example: http://api.nobelprize.org/v1/laureate.json This includes affiliations which look like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to automatically create IDs from content hash of row 413779210 | |
466794369 | https://github.com/simonw/sqlite-utils/issues/14#issuecomment-466794369 | https://api.github.com/repos/simonw/sqlite-utils/issues/14 | MDEyOklzc3VlQ29tbWVudDQ2Njc5NDM2OQ== | simonw 9599 | 2019-02-24T16:59:11Z | 2019-02-24T16:59:43Z | OWNER | https://www.sqlite.org/lang_createindex.html May as well support |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Utilities for adding indexes 413842611 | |
466800090 | https://github.com/simonw/sqlite-utils/issues/14#issuecomment-466800090 | https://api.github.com/repos/simonw/sqlite-utils/issues/14 | MDEyOklzc3VlQ29tbWVudDQ2NjgwMDA5MA== | simonw 9599 | 2019-02-24T18:01:10Z | 2019-02-24T18:01:10Z | OWNER | The I'm going to ignore it for the moment. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Utilities for adding indexes 413842611 | |
466800210 | https://github.com/simonw/sqlite-utils/issues/14#issuecomment-466800210 | https://api.github.com/repos/simonw/sqlite-utils/issues/14 | MDEyOklzc3VlQ29tbWVudDQ2NjgwMDIxMA== | simonw 9599 | 2019-02-24T18:02:23Z | 2019-02-24T18:02:23Z | OWNER | Likewise I'm going to ignore indexes on expressions (as opposed to just columns): https://www.sqlite.org/expridx.html |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Utilities for adding indexes 413842611 | |
496756348 | https://github.com/simonw/sqlite-utils/issues/16#issuecomment-496756348 | https://api.github.com/repos/simonw/sqlite-utils/issues/16 | MDEyOklzc3VlQ29tbWVudDQ5Njc1NjM0OA== | simonw 9599 | 2019-05-29T02:12:43Z | 2019-05-29T02:12:43Z | OWNER | For the CLI I'm thinking:
So the foreign key is added using If the user doesn't provide the column type we can derive it from the foreign key. Can we make the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
add_column() should support REFERENCES {other_table}({other_column}) 413867537 | |
496756758 | https://github.com/simonw/sqlite-utils/issues/16#issuecomment-496756758 | https://api.github.com/repos/simonw/sqlite-utils/issues/16 | MDEyOklzc3VlQ29tbWVudDQ5Njc1Njc1OA== | simonw 9599 | 2019-05-29T02:14:50Z | 2019-05-29T02:14:50Z | OWNER | Hmm... probably not:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
add_column() should support REFERENCES {other_table}({other_column}) 413867537 | |
496757010 | https://github.com/simonw/sqlite-utils/issues/16#issuecomment-496757010 | https://api.github.com/repos/simonw/sqlite-utils/issues/16 | MDEyOklzc3VlQ29tbWVudDQ5Njc1NzAxMA== | simonw 9599 | 2019-05-29T02:16:17Z | 2019-05-29T02:16:17Z | OWNER | In that case If you want to point at a different column, use |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
add_column() should support REFERENCES {other_table}({other_column}) 413867537 | |
496787958 | https://github.com/simonw/sqlite-utils/issues/16#issuecomment-496787958 | https://api.github.com/repos/simonw/sqlite-utils/issues/16 | MDEyOklzc3VlQ29tbWVudDQ5Njc4Nzk1OA== | simonw 9599 | 2019-05-29T05:17:58Z | 2019-05-29T05:17:58Z | OWNER | Shipped this feature in sqlite-utils 1.1: https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v1-1 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
add_column() should support REFERENCES {other_table}({other_column}) 413867537 | |
466820167 | https://github.com/simonw/sqlite-utils/issues/17#issuecomment-466820167 | https://api.github.com/repos/simonw/sqlite-utils/issues/17 | MDEyOklzc3VlQ29tbWVudDQ2NjgyMDE2Nw== | simonw 9599 | 2019-02-24T21:42:33Z | 2019-02-24T21:42:33Z | OWNER | It looks like the type information isn't actually used for anything at all, so this: Could actually be written like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Improve and document foreign_keys=... argument to insert/create/etc 413868452 | |
466820188 | https://github.com/simonw/sqlite-utils/issues/17#issuecomment-466820188 | https://api.github.com/repos/simonw/sqlite-utils/issues/17 | MDEyOklzc3VlQ29tbWVudDQ2NjgyMDE4OA== | simonw 9599 | 2019-02-24T21:42:50Z | 2019-02-24T21:42:50Z | OWNER | Sanity checking those foreign keys would be worthwhile. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Improve and document foreign_keys=... argument to insert/create/etc 413868452 | |
466821200 | https://github.com/simonw/sqlite-utils/issues/17#issuecomment-466821200 | https://api.github.com/repos/simonw/sqlite-utils/issues/17 | MDEyOklzc3VlQ29tbWVudDQ2NjgyMTIwMA== | simonw 9599 | 2019-02-24T21:55:08Z | 2019-02-24T21:55:54Z | OWNER | This involves a breaking API change. I need to call that out in the README and also fix my two other projects which use the old four-tuple version of And I'll also need to set a minimum version for https://github.com/simonw/db-to-sqlite/blob/c2f8e93bc6bbdfd135de3656ea0f497859ae49ff/setup.py#L25 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Improve and document foreign_keys=... argument to insert/create/etc 413868452 | |
466823422 | https://github.com/simonw/sqlite-utils/issues/17#issuecomment-466823422 | https://api.github.com/repos/simonw/sqlite-utils/issues/17 | MDEyOklzc3VlQ29tbWVudDQ2NjgyMzQyMg== | simonw 9599 | 2019-02-24T22:20:05Z | 2019-02-24T22:20:05Z | OWNER | Re-opening this until I've fixed the other two projects. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Improve and document foreign_keys=... argument to insert/create/etc 413868452 | |
466827533 | https://github.com/simonw/sqlite-utils/issues/17#issuecomment-466827533 | https://api.github.com/repos/simonw/sqlite-utils/issues/17 | MDEyOklzc3VlQ29tbWVudDQ2NjgyNzUzMw== | simonw 9599 | 2019-02-24T23:03:29Z | 2019-02-24T23:03:29Z | OWNER | Need to put out a new release of |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Improve and document foreign_keys=... argument to insert/create/etc 413868452 | |
466828503 | https://github.com/simonw/sqlite-utils/issues/17#issuecomment-466828503 | https://api.github.com/repos/simonw/sqlite-utils/issues/17 | MDEyOklzc3VlQ29tbWVudDQ2NjgyODUwMw== | simonw 9599 | 2019-02-24T23:15:26Z | 2019-02-24T23:15:26Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Improve and document foreign_keys=... argument to insert/create/etc 413868452 | ||
466830869 | https://github.com/simonw/sqlite-utils/issues/17#issuecomment-466830869 | https://api.github.com/repos/simonw/sqlite-utils/issues/17 | MDEyOklzc3VlQ29tbWVudDQ2NjgzMDg2OQ== | simonw 9599 | 2019-02-24T23:45:48Z | 2019-02-24T23:45:48Z | OWNER | Both projects have been upgraded. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Improve and document foreign_keys=... argument to insert/create/etc 413868452 | |
480621924 | https://github.com/simonw/sqlite-utils/issues/18#issuecomment-480621924 | https://api.github.com/repos/simonw/sqlite-utils/issues/18 | MDEyOklzc3VlQ29tbWVudDQ4MDYyMTkyNA== | psychemedia 82988 | 2019-04-07T19:31:42Z | 2019-04-07T19:31:42Z | NONE | I've just noticed that SQLite lets you IGNORE inserts that collide with a pre-existing key. This can be quite handy if you have a dataset that keeps changing in part, and you don't want to upsert and replace pre-existing PK rows but you do want to ignore collisions to existing PK rows. Do |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
.insert/.upsert/.insert_all/.upsert_all should add missing columns 413871266 | |
495818358 | https://github.com/simonw/sqlite-utils/issues/18#issuecomment-495818358 | https://api.github.com/repos/simonw/sqlite-utils/issues/18 | MDEyOklzc3VlQ29tbWVudDQ5NTgxODM1OA== | simonw 9599 | 2019-05-25T00:16:50Z | 2019-05-25T00:16:50Z | OWNER | Oh that's really interesting - yeah I think having an option to insert if missing, skip otherwise would be a good feature. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
.insert/.upsert/.insert_all/.upsert_all should add missing columns 413871266 | |
473160476 | https://github.com/simonw/datasette/pull/413#issuecomment-473160476 | https://api.github.com/repos/simonw/datasette/issues/413 | MDEyOklzc3VlQ29tbWVudDQ3MzE2MDQ3Ng== | simonw 9599 | 2019-03-15T05:06:37Z | 2019-03-15T05:06:37Z | OWNER | Thanks! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Update spatialite.rst 413887019 | |
473156774 | https://github.com/simonw/datasette/issues/414#issuecomment-473156774 | https://api.github.com/repos/simonw/datasette/issues/414 | MDEyOklzc3VlQ29tbWVudDQ3MzE1Njc3NA== | simonw 9599 | 2019-03-15T04:42:06Z | 2019-03-15T04:42:06Z | OWNER | This has been bothering me as well, especially when I try to install |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
datasette requires specific version of Click 415575624 | |
473157770 | https://github.com/simonw/datasette/issues/415#issuecomment-473157770 | https://api.github.com/repos/simonw/datasette/issues/415 | MDEyOklzc3VlQ29tbWVudDQ3MzE1Nzc3MA== | simonw 9599 | 2019-03-15T04:49:03Z | 2019-03-15T04:49:03Z | OWNER | Interesting idea. I can see how this would make sense if you are dealing with really long SQL queries. My own example of a long query that might benefit from this: https://russian-ads-demo.herokuapp.com/russian-ads-a42c4e8?sql=select%0D%0A++++target_id%2C%0D%0A++++targets.name%2C%0D%0A++++count()+as+n%2C%0D%0A++++json_object(%0D%0A++++++++%22href%22%2C+%22%2Frussian-ads%2Ffaceted-targets%3Ftargets%3D%22+||+%0D%0A++++++++++++json_insert(%3Atargets%2C+%27%24[%27+||+json_array_length(%3Atargets)+||+%27]%27%2C+target_id)%0D%0A++++++++%2C%0D%0A++++++++%22label%22%2C+json_insert(%3Atargets%2C+%27%24[%27+||+json_array_length(%3Atargets)+||+%27]%27%2C+target_id)%0D%0A++++)+as+apply_this_facet%2C%0D%0A++++json_object(%0D%0A++++++++%22href%22%2C+%22%2Frussian-ads%2Fdisplay_ads%3F_targets_json%3D%22+||+%0D%0A++++++++++++json_insert(%3Atargets%2C+%27%24[%27+||+json_array_length(%3Atargets)+||+%27]%27%2C+target_id)%0D%0A++++++++%2C%0D%0A++++++++%22label%22%2C+%22See+%22+||+count()+||+%22+ads+matching+%22+||+json_insert(%3Atargets%2C+%27%24[%27+||+json_array_length(%3Atargets)+||+%27]%27%2C+target_id)%0D%0A++++)+as+browse_these_ads%0D%0Afrom+ad_targets%0D%0Ajoin+targets+on+ad_targets.target_id+%3D+targets.id%0D%0Awhere%0D%0A++++json_array_length(%3Atargets)+%3D%3D+0+or%0D%0A++++ad_id+in+(%0D%0A++++++++select+ad_id%0D%0A++++++++from+%22ad_targets%22%0D%0A++++++++where+%22ad_targets%22.target_id+in+(select+value+from+json_each(%3Atargets))%0D%0A++++++++group+by+%22ad_targets%22.ad_id%0D%0A++++++++having+count(distinct+%22ad_targets%22.target_id)+%3D+json_array_length(%3Atargets)%0D%0A++++)%0D%0A++++and+target_id+not+in+(select+value+from+json_each(%3Atargets))%0D%0Agroup+by%0D%0A++++target_id+order+by+n+desc%0D%0A&targets=[%22e6200%22] Having a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add query parameter to hide SQL textarea 418329842 | |
473164038 | https://github.com/simonw/datasette/issues/415#issuecomment-473164038 | https://api.github.com/repos/simonw/datasette/issues/415 | MDEyOklzc3VlQ29tbWVudDQ3MzE2NDAzOA== | simonw 9599 | 2019-03-15T05:31:21Z | 2019-03-15T05:31:21Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add query parameter to hide SQL textarea 418329842 | ||
473217334 | https://github.com/simonw/datasette/issues/415#issuecomment-473217334 | https://api.github.com/repos/simonw/datasette/issues/415 | MDEyOklzc3VlQ29tbWVudDQ3MzIxNzMzNA== | ad-si 36796532 | 2019-03-15T09:30:57Z | 2019-03-15T09:30:57Z | NONE | Awesome, thanks! 😁 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add query parameter to hide SQL textarea 418329842 | |
473154643 | https://github.com/simonw/datasette/pull/416#issuecomment-473154643 | https://api.github.com/repos/simonw/datasette/issues/416 | MDEyOklzc3VlQ29tbWVudDQ3MzE1NDY0Mw== | simonw 9599 | 2019-03-15T04:27:47Z | 2019-03-15T04:28:00Z | OWNER | Deployed a demo: https://datasette-optional-hash-demo.now.sh/
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
URL hashing now optional: turn on with --config hash_urls:1 (#418) 421348146 | |
473156513 | https://github.com/simonw/datasette/pull/416#issuecomment-473156513 | https://api.github.com/repos/simonw/datasette/issues/416 | MDEyOklzc3VlQ29tbWVudDQ3MzE1NjUxMw== | simonw 9599 | 2019-03-15T04:40:29Z | 2019-03-15T04:40:29Z | OWNER | Still TODO: need to figure out what to do about cache TTL. Defaulting to 365 days no longer makes sense without the hash_urls setting. Maybe drop that setting default to 0? Here's the setting: And here's where it takes affect: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
URL hashing now optional: turn on with --config hash_urls:1 (#418) 421348146 | |
473159679 | https://github.com/simonw/datasette/pull/416#issuecomment-473159679 | https://api.github.com/repos/simonw/datasette/issues/416 | MDEyOklzc3VlQ29tbWVudDQ3MzE1OTY3OQ== | simonw 9599 | 2019-03-15T05:01:27Z | 2019-03-15T05:01:27Z | OWNER | Also: if the option is False and the user visits a URL with a hash in it, should we redirect them? I'm inclined to say no: furthermore, I'd be OK continuing to serve a far-future cache header for that case. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
URL hashing now optional: turn on with --config hash_urls:1 (#418) 421348146 | |
473160702 | https://github.com/simonw/datasette/pull/416#issuecomment-473160702 | https://api.github.com/repos/simonw/datasette/issues/416 | MDEyOklzc3VlQ29tbWVudDQ3MzE2MDcwMg== | simonw 9599 | 2019-03-15T05:08:13Z | 2019-03-15T05:08:13Z | OWNER | This also needs extensive tests to ensure that with the option turned on all of the redirects behave as they should. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
URL hashing now optional: turn on with --config hash_urls:1 (#418) 421348146 | |
473310026 | https://github.com/simonw/datasette/pull/416#issuecomment-473310026 | https://api.github.com/repos/simonw/datasette/issues/416 | MDEyOklzc3VlQ29tbWVudDQ3MzMxMDAyNg== | simonw 9599 | 2019-03-15T14:35:53Z | 2019-03-15T14:35:53Z | OWNER | See #418 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
URL hashing now optional: turn on with --config hash_urls:1 (#418) 421348146 | |
473714545 | https://github.com/simonw/datasette/pull/416#issuecomment-473714545 | https://api.github.com/repos/simonw/datasette/issues/416 | MDEyOklzc3VlQ29tbWVudDQ3MzcxNDU0NQ== | simonw 9599 | 2019-03-17T21:03:08Z | 2019-03-17T21:04:17Z | OWNER | I'm going to introduce a new config setting: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
URL hashing now optional: turn on with --config hash_urls:1 (#418) 421348146 | |
473715254 | https://github.com/simonw/datasette/pull/416#issuecomment-473715254 | https://api.github.com/repos/simonw/datasette/issues/416 | MDEyOklzc3VlQ29tbWVudDQ3MzcxNTI1NA== | simonw 9599 | 2019-03-17T21:11:37Z | 2019-03-17T21:11:37Z | OWNER | The code for this has got a bit tricky. I need to make a decision at some point as to if the current request is a hashed_url request (if it includes a DB hash in the URL which is the current correct hash). I then need to be able to use that fact to decide which default TTL value to apply when returning the response. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
URL hashing now optional: turn on with --config hash_urls:1 (#418) 421348146 | |
473717052 | https://github.com/simonw/datasette/pull/416#issuecomment-473717052 | https://api.github.com/repos/simonw/datasette/issues/416 | MDEyOklzc3VlQ29tbWVudDQ3MzcxNzA1Mg== | simonw 9599 | 2019-03-17T21:32:24Z | 2019-03-17T21:33:16Z | OWNER | Since this feature is now controlled by a config setting, I'm inclined to make it also available via a URL parameter. If you hit this URL:
We can redirect to:
In this way developers can opt-in to a hashed (and hence far-future cached) response on a per-query basis. This option won't be available against mutable databases though, which are coming in #419 This means that the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
URL hashing now optional: turn on with --config hash_urls:1 (#418) 421348146 | |
473308631 | https://github.com/simonw/datasette/issues/417#issuecomment-473308631 | https://api.github.com/repos/simonw/datasette/issues/417 | MDEyOklzc3VlQ29tbWVudDQ3MzMwODYzMQ== | simonw 9599 | 2019-03-15T14:32:13Z | 2019-03-15T14:32:13Z | OWNER | This would allow Datasette to be easily used as a "data library" (like a data warehouse but less expectation of big data querying technology such as Presto). One of the things I learned at the NICAR CAR 2019 conference in Newport Beach is that there is a very real need for some kind of easily accessible data library at most newsrooms. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette Library 421546944 | |
473312514 | https://github.com/simonw/datasette/issues/417#issuecomment-473312514 | https://api.github.com/repos/simonw/datasette/issues/417 | MDEyOklzc3VlQ29tbWVudDQ3MzMxMjUxNA== | simonw 9599 | 2019-03-15T14:42:07Z | 2019-03-17T22:12:30Z | OWNER | A neat ability of Datasette Library would be if it can work against other files that have been dropped into the folder. In particular: if a user drops a CSV file into the folder, how about automatically converting that CSV file to SQLite using sqlite-utils? |
{ "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette Library 421546944 | |
474280581 | https://github.com/simonw/datasette/issues/417#issuecomment-474280581 | https://api.github.com/repos/simonw/datasette/issues/417 | MDEyOklzc3VlQ29tbWVudDQ3NDI4MDU4MQ== | psychemedia 82988 | 2019-03-19T10:06:42Z | 2019-03-19T10:06:42Z | CONTRIBUTOR | This would be really interesting but several possibilities in use arise, I think? For example:
CSV files may also have messy names compared to the table you want. Or for an update CSV, may have the form |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette Library 421546944 | |
586047525 | https://github.com/simonw/datasette/issues/417#issuecomment-586047525 | https://api.github.com/repos/simonw/datasette/issues/417 | MDEyOklzc3VlQ29tbWVudDU4NjA0NzUyNQ== | simonw 9599 | 2020-02-14T01:03:43Z | 2020-02-14T01:59:02Z | OWNER | OK, I have a plan. I'm going to try and implement this is a core Datasette feature (no plugins) with the following design:
To check if a file is valid SQLite, Datasette will first check if the first few bytes of the file are |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette Library 421546944 | |
586047995 | https://github.com/simonw/datasette/issues/417#issuecomment-586047995 | https://api.github.com/repos/simonw/datasette/issues/417 | MDEyOklzc3VlQ29tbWVudDU4NjA0Nzk5NQ== | simonw 9599 | 2020-02-14T01:05:20Z | 2020-02-14T01:05:20Z | OWNER | I'm going to add two methods to the Datasette class to help support this work (and to enable exciting new plugin opportunities in the future):
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette Library 421546944 | |
586065843 | https://github.com/simonw/datasette/issues/417#issuecomment-586065843 | https://api.github.com/repos/simonw/datasette/issues/417 | MDEyOklzc3VlQ29tbWVudDU4NjA2NTg0Mw== | simonw 9599 | 2020-02-14T02:20:53Z | 2020-02-14T02:20:53Z | OWNER | MVP for this feature: just do it once on startup, don't scan for new files every X seconds. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette Library 421546944 | |
586066798 | https://github.com/simonw/datasette/issues/417#issuecomment-586066798 | https://api.github.com/repos/simonw/datasette/issues/417 | MDEyOklzc3VlQ29tbWVudDU4NjA2Njc5OA== | simonw 9599 | 2020-02-14T02:24:54Z | 2020-02-14T02:24:54Z | OWNER | I'm going to move this over to a draft pull request. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette Library 421546944 | |
586599424 | https://github.com/simonw/datasette/issues/417#issuecomment-586599424 | https://api.github.com/repos/simonw/datasette/issues/417 | MDEyOklzc3VlQ29tbWVudDU4NjU5OTQyNA== | psychemedia 82988 | 2020-02-15T15:12:19Z | 2020-02-15T15:12:33Z | CONTRIBUTOR | So could the polling support also allow you to call sqlite_utils to update a database with csv files? (Though I'm guessing you would only want to handle changed files? Do your scrapers check and cache csv datestamps/hashes?) |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette Library 421546944 | |
751127384 | https://github.com/simonw/datasette/issues/417#issuecomment-751127384 | https://api.github.com/repos/simonw/datasette/issues/417 | MDEyOklzc3VlQ29tbWVudDc1MTEyNzM4NA== | dyllan-to-you 1279360 | 2020-12-24T22:56:48Z | 2020-12-24T22:56:48Z | NONE | Instead of scanning the directory every 10s, have you considered listening for the native system events to notify you of updates? I think python has a nice module to do this for you called watchdog |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette Library 421546944 | |
751127485 | https://github.com/simonw/datasette/issues/417#issuecomment-751127485 | https://api.github.com/repos/simonw/datasette/issues/417 | MDEyOklzc3VlQ29tbWVudDc1MTEyNzQ4NQ== | simonw 9599 | 2020-12-24T22:58:05Z | 2020-12-24T22:58:05Z | OWNER | That's a great idea. I'd ruled that out because working with the different operating system versions of those is tricky, but if |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette Library 421546944 | |
751504136 | https://github.com/simonw/datasette/issues/417#issuecomment-751504136 | https://api.github.com/repos/simonw/datasette/issues/417 | MDEyOklzc3VlQ29tbWVudDc1MTUwNDEzNg== | drewda 212369 | 2020-12-27T19:02:06Z | 2020-12-27T19:02:06Z | NONE | Very much looking forward to seeing this functionality come together. This is probably out-of-scope for an initial release, but in the future it could be useful to also think of how to run this is a container'ized context. For example, an immutable datasette container that points to an S3 bucket of SQLite DBs or CSVs. Or an immutable datasette container pointing to a NFS volume elsewhere on a Kubernetes cluster. |
{ "total_count": 2, "+1": 2, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette Library 421546944 | |
752098906 | https://github.com/simonw/datasette/issues/417#issuecomment-752098906 | https://api.github.com/repos/simonw/datasette/issues/417 | MDEyOklzc3VlQ29tbWVudDc1MjA5ODkwNg== | psychemedia 82988 | 2020-12-29T14:34:30Z | 2020-12-29T14:34:50Z | CONTRIBUTOR | FWIW, I had a look at Not a production thing, just an experiment trying to explore what might be possible... |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Datasette Library 421546944 | |
473709815 | https://github.com/simonw/datasette/issues/418#issuecomment-473709815 | https://api.github.com/repos/simonw/datasette/issues/418 | MDEyOklzc3VlQ29tbWVudDQ3MzcwOTgxNQ== | simonw 9599 | 2019-03-17T20:08:31Z | 2019-03-17T20:08:31Z | OWNER | In #419 I'm now proposing that Datasette default to opening files in "mutable" mode, in which case it would not make sense to support hash URLs for those files at all. So actually this feature will only be available for files that are explicitly opened in immutable mode. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Hashed URLs should be optional 421548881 | |
473724868 | https://github.com/simonw/datasette/issues/418#issuecomment-473724868 | https://api.github.com/repos/simonw/datasette/issues/418 | MDEyOklzc3VlQ29tbWVudDQ3MzcyNDg2OA== | simonw 9599 | 2019-03-17T23:07:31Z | 2019-03-17T23:07:31Z | OWNER | The design of this feature is discussed extensively in the comments on pull request #416 Some demos:
``` ~ $ curl -i 'https://latest.datasette.io/fixtures-dd88475/facetable' HTTP/2 200 date: Sun, 17 Mar 2019 23:05:21 GMT content-type: text/html; charset=utf-8 content-length: 17555 cache-control: max-age=31536000 </html>~ $ curl -i 'https://latest.datasette.io/fixtures/facetable' HTTP/2 200 date: Sun, 17 Mar 2019 23:05:40 GMT content-type: text/html; charset=utf-8 content-length: 17410 cache-control: max-age=5 ``` There are now three config settings relevant to the above:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Hashed URLs should be optional 421548881 | |
491551647 | https://github.com/simonw/datasette/issues/418#issuecomment-491551647 | https://api.github.com/repos/simonw/datasette/issues/418 | MDEyOklzc3VlQ29tbWVudDQ5MTU1MTY0Nw== | simonw 9599 | 2019-05-11T23:31:23Z | 2019-05-11T23:31:23Z | OWNER | Actually right now https://latest.datasette.io/fixtures/facetable?_hash=1 redirects to https://latest.datasette.io/fixtures-000/facetable - because we are no longer calculating hashes on startup for non-immutable databases. So that's weird. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Hashed URLs should be optional 421548881 | |
491551702 | https://github.com/simonw/datasette/issues/418#issuecomment-491551702 | https://api.github.com/repos/simonw/datasette/issues/418 | MDEyOklzc3VlQ29tbWVudDQ5MTU1MTcwMg== | simonw 9599 | 2019-05-11T23:32:21Z | 2019-05-11T23:32:21Z | OWNER | I'm going to re-open this, because some of this needs revisiting now that we aren't running |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Hashed URLs should be optional 421548881 | |
493109347 | https://github.com/simonw/datasette/issues/418#issuecomment-493109347 | https://api.github.com/repos/simonw/datasette/issues/418 | MDEyOklzc3VlQ29tbWVudDQ5MzEwOTM0Nw== | simonw 9599 | 2019-05-16T15:12:26Z | 2019-05-16T15:12:26Z | OWNER | I'm ready to close this now thanks to fixing #471 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Hashed URLs should be optional 421548881 |
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE [issue_comments] ( [html_url] TEXT, [issue_url] TEXT, [id] INTEGER PRIMARY KEY, [node_id] TEXT, [user] INTEGER REFERENCES [users]([id]), [created_at] TEXT, [updated_at] TEXT, [author_association] TEXT, [body] TEXT, [reactions] TEXT, [issue] INTEGER REFERENCES [issues]([id]) , [performed_via_github_app] TEXT); CREATE INDEX [idx_issue_comments_issue] ON [issue_comments] ([issue]); CREATE INDEX [idx_issue_comments_user] ON [issue_comments] ([user]);
user >30