issue_comments
10,495 rows sorted by created_at
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
- Optimize all those calls to index_list and foreign_key_list 27
- Add ?_extra= mechanism for requesting extra properties in JSON 26
- 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
- base_url configuration setting 24
- Redesign register_output_renderer callback 24
- API explorer tool 24
- …
id | html_url | issue_url | node_id | user | created_at ▼ | updated_at | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
511259493 | https://github.com/simonw/sqlite-utils/issues/28#issuecomment-511259493 | https://api.github.com/repos/simonw/sqlite-utils/issues/28 | MDEyOklzc3VlQ29tbWVudDUxMTI1OTQ5Mw== | simonw 9599 | 2019-07-15T02:37:20Z | 2019-07-15T02:37:20Z | OWNER | I've changed my mind on this one. I don't think the docs will read particularly well if they try to cover both of these things at once. I could set up links between the two, but actually trying to combine them feels like it will result in documentation that is less useful. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Rearrange the docs by area, not CLI vs Python 455996809 | |
511266664 | https://github.com/simonw/sqlite-utils/pull/40#issuecomment-511266664 | https://api.github.com/repos/simonw/sqlite-utils/issues/40 | MDEyOklzc3VlQ29tbWVudDUxMTI2NjY2NA== | simonw 9599 | 2019-07-15T03:47:26Z | 2019-07-15T03:47:26Z | OWNER | This will close #36 and #39 once it is finished. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
.get() method plus support for compound primary keys 467928674 | |
511624403 | https://github.com/simonw/datasette/pull/557#issuecomment-511624403 | https://api.github.com/repos/simonw/datasette/issues/557 | MDEyOklzc3VlQ29tbWVudDUxMTYyNDQwMw== | simonw 9599 | 2019-07-16T01:07:27Z | 2019-07-16T01:10:24Z | OWNER | Woohoo! That got the tests running on Windows. They're pretty slow there unfortunately... and I'm seeing some failures. https://travis-ci.org/simonw/datasette/jobs/559205729 is the first run against Windows. ``` collected 353 items tests\test_cli.py ... [ 0%] tests\test_black.py . [ 1%] tests\test_api.py ..........F........................................... [ 16%] .....s..F..................FF...............F...... [ 30%] tests\test_cli.py F [ 31%] tests\test_csv.py ....... [ 33%] tests\test_database.py .... [ 34%] tests\test_docs.py ..................................................... [ 49%] .... [ 50%] tests\test_facets.py .....ss. [ 52%] tests\test_filters.py ........... [ 55%] tests\test_html.py ...FF.....FF..............................F.FF.F..... [ 70%] .....F [ 72%] tests\test_plugins.py ...............F [ 77%] tests\test_publish_cloudrun.py ..F. [ 78%] tests\test_publish_heroku.py ...FF [ 79%] tests\test_publish_now.py ...FF.. [ 81%] tests\test_utils.py .............................F...........FFF........ [ 96%] .............E [100%] =================================== ERRORS ==================================== __ ERROR at teardown of test_format_bytes[1099511627776-1.0 TB] ___
..........\build\simonw\datasette\tests\fixtures.py:161: ..........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmp_tkydmmd' onerror = <function rmtree.\<locals>.onerror at 0x0000017D0230CAF8>
c:\python37\lib\shutil.py:398: PermissionError ================================== FAILURES =================================== _____ test_allow_sql_off ______
........\build\simonw\datasette\tests\test_api.py:600: ........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmp6pkccymo' onerror = <function rmtree.\<locals>.onerror at 0x0000017D0261FD38>
c:\python37\lib\shutil.py:398: PermissionError _ testtable_filter_extra_where_disabled_if_no_sql_allowed ___
........\build\simonw\datasette\tests\test_api.py:1050: ........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmpfa3zhjsq' onerror = <function rmtree.\<locals>.onerror at 0x0000017D025E0B88>
c:\python37\lib\shutil.py:398: PermissionError ____ test_allow_facet_off _____
........\build\simonw\datasette\tests\test_api.py:1454: ........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmpvap5inq5' onerror = <function rmtree.\<locals>.onerror at 0x0000017D025DAAF8>
c:\python37\lib\shutil.py:398: PermissionError _____ test_suggest_facets_off _______
........\build\simonw\datasette\tests\test_api.py:1461: ........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmp7hn1_v44' onerror = <function rmtree.\<locals>.onerror at 0x0000017D0260C5E8>
c:\python37\lib\shutil.py:398: PermissionError ___ testconfig_force_https_urls _____
........\build\simonw\datasette\tests\test_api.py:1589: ........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmpu3lq69xr' onerror = <function rmtree.\<locals>.onerror at 0x0000017D02825EE8>
c:\python37\lib\shutil.py:398: PermissionError __ test_serve_with_inspect_file_prepopulates_table_counts_cache ___
........\build\simonw\datasette\tests\test_cli.py:36: ........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmpo65sp2ig' onerror = <function rmtree.\<locals>.onerror at 0x0000017D0240DC18>
c:\python37\lib\shutil.py:398: PermissionError _____ test_static_mounts ______
........\build\simonw\datasette\tests\test_html.py:64: ........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmpqv82mm64' onerror = <function rmtree.\<locals>.onerror at 0x0000017D0294FD38>
c:\python37\lib\shutil.py:398: PermissionError ---------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "C:\Users\travis\build\simonw\datasette\datasette\utils\asgi.py", line 100, in call__ return await view(new_scope, receive, send) File "C:\Users\travis\build\simonw\datasette\datasette\utils\asgi.py", line 315, in inner_static await asgi_send_file(send, full_path, chunk_size=chunk_size) File "C:\Users\travis\build\simonw\datasette\datasette\utils\asgi.py", line 296, in asgi_send_file {"type": "http.response.body", "body": chunk, "more_body": more_body} File "c:\python37\lib\site-packages\aiofiles\base.py", line 92, in aexit yield from self.obj.close() File "c:\python37\lib\site-packages\aiofiles\threadpool\utils.py", line 36, in method return (yield from self._loop.run_in_executor(self._executor, cb)) concurrent.futures._base.CancelledError _____ test_memory_database_page ________
........\build\simonw\datasette\tests\test_html.py:75: ........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmp6cagtj6v' onerror = <function rmtree.\<locals>.onerror at 0x0000017D040A2AF8>
c:\python37\lib\shutil.py:398: PermissionError ____ testtable_cell_truncation ______
........\build\simonw\datasette\tests\test_html.py:123: ........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmp1zz78pre' onerror = <function rmtree.\<locals>.onerror at 0x0000017D03DFD5E8>
c:\python37\lib\shutil.py:398: PermissionError ___ test_row_page_does_not_truncate ___
........\build\simonw\datasette\tests\test_html.py:148: ........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmpsukb573e' onerror = <function rmtree.\<locals>.onerror at 0x0000017D023B9AF8>
c:\python37\lib\shutil.py:398: PermissionError ____ test_database_download_allowed_for_immutable _____
........\build\simonw\datasette\tests\test_html.py:755: ........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmpcivpcoop' onerror = <function rmtree.\<locals>.onerror at 0x0000017D02666A68>
c:\python37\lib\shutil.py:398: PermissionError ---------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "C:\Users\travis\build\simonw\datasette\datasette\utils\asgi.py", line 100, in call__ return await view(new_scope, receive, send) File "C:\Users\travis\build\simonw\datasette\datasette\utils\asgi.py", line 174, in view await response.asgi_send(send) File "C:\Users\travis\build\simonw\datasette\datasette\utils\asgi.py", line 383, in asgi_send return await asgi_send_file(send, self.filepath, content_type=self.content_type) File "C:\Users\travis\build\simonw\datasette\datasette\utils\asgi.py", line 296, in asgi_send_file {"type": "http.response.body", "body": chunk, "more_body": more_body} File "c:\python37\lib\site-packages\aiofiles\base.py", line 92, in aexit yield from self.obj.close() File "c:\python37\lib\site-packages\aiofiles\threadpool\utils.py", line 36, in method return (yield from self._loop.run_in_executor(self._executor, cb)) concurrent.futures._base.CancelledError _______ test_database_download_disallowed_for_memory _____
........\build\simonw\datasette\tests\test_html.py:773: ........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmpvwpwrijf' onerror = <function rmtree.\<locals>.onerror at 0x0000017D02637D38>
c:\python37\lib\shutil.py:398: PermissionError _____ test_allow_download_off _______
........\build\simonw\datasette\tests\test_html.py:782: ........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmpmz0s6rqz' onerror = <function rmtree.\<locals>.onerror at 0x0000017D03EFA1F8>
c:\python37\lib\shutil.py:398: PermissionError _____ test_allow_sql_off ______
........\build\simonw\datasette\tests\test_html.py:800: ........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmpmrr0edfk' onerror = <function rmtree.\<locals>.onerror at 0x0000017D03EFFD38>
c:\python37\lib\shutil.py:398: PermissionError ____ test_custom_table_include ______
........\build\simonw\datasette\tests\test_html.py:973: ........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmpxcd2zp24' onerror = <function rmtree.\<locals>.onerror at 0x0000017D03FFBD38>
c:\python37\lib\shutil.py:398: PermissionError ____ test_plugins_extra_template_vars _____ restore_working_directory = None
........\build\simonw\datasette\tests\test_plugins.py:196: ........\build\simonw\datasette\tests\fixtures.py:156: in make_app_client yield client c:\python37\lib\tempfile.py:805: in exit self.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:400: in _rmtree_unsafe onerror(os.unlink, fullname, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmpkjbhg_ho' onerror = <function rmtree.\<locals>.onerror at 0x0000017D03DB6DC8>
c:\python37\lib\shutil.py:398: PermissionError ____ test_publish_cloudrun ____ mock_call = <MagicMock name='check_call' id='1636414304584'> mock_output = <MagicMock name='check_output' id='1636412936264'> mock_which = <MagicMock name='which' id='1636424648584'>
........\build\simonw\datasette\tests\test_publish_cloudrun.py:37: AssertionError ____ test_publish_heroku ____ mock_call = <MagicMock name='call' id='1636419273928'> mock_check_output = <MagicMock name='check_output' id='1636425565704'> mock_which = <MagicMock name='which' id='1636423528072'>
........\build\simonw\datasette\tests\test_publish_heroku.py:59: AssertionError ___ test_publish_heroku_plugin_secrets ____ mock_call = <MagicMock name='call' id='1636418803912'> mock_check_output = <MagicMock name='check_output' id='1636422960392'> mock_which = <MagicMock name='which' id='1636421692616'>
........\build\simonw\datasette\tests\test_publish_heroku.py:90: AssertionError ______ test_publish_now _______ mock_run = <MagicMock name='run' id='1636418894600'> mock_which = <MagicMock name='which' id='1636418240136'>
........\build\simonw\datasette\tests\test_publish_now.py:43: AssertionError ___ testpublish_now_force_token _____ mock_run = <MagicMock name='run' id='1636447182536'> mock_which = <MagicMock name='which' id='1636420257416'>
........\build\simonw\datasette\tests\test_publish_now.py:57: AssertionError ____ testdetect_fts _____
........\build\simonw\datasette\tests\test_utils.py:182: OperationalError ___ test_temporary_docker_directory_uses_hard_link ____
..........\build\simonw\datasette\tests\test_utils.py:239: c:\python37\lib\contextlib.py:119: in exit next(self.gen) ..........\build\simonw\datasette\datasette\utils__init__.py:397: in temporary_docker_directory tmp.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:395: in _rmtree_unsafe _rmtree_unsafe(fullname, onerror) c:\python37\lib\shutil.py:404: in _rmtree_unsafe onerror(os.rmdir, path, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmp0g07cby1\t' onerror = <function rmtree.\<locals>.onerror at 0x0000017D0230C5E8>
c:\python37\lib\shutil.py:402: PermissionError __ test_temporary_docker_directory_uses_copy_if_hard_link_fails ___ mock_link = <MagicMock name='link' id='1636414222984'>
..........\build\simonw\datasette\tests\test_utils.py:266: c:\python37\lib\contextlib.py:119: in exit next(self.gen) ..........\build\simonw\datasette\datasette\utils__init__.py:397: in temporary_docker_directory tmp.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:395: in _rmtree_unsafe _rmtree_unsafe(fullname, onerror) c:\python37\lib\shutil.py:404: in _rmtree_unsafe onerror(os.rmdir, path, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmpywj5p10g\t' onerror = <function rmtree.\<locals>.onerror at 0x0000017D0230C558>
c:\python37\lib\shutil.py:402: PermissionError __ testtemporary_docker_directory_quotes_args ___
..........\build\simonw\datasette\tests\test_utils.py:289: c:\python37\lib\contextlib.py:119: in exit next(self.gen) ..........\build\simonw\datasette\datasette\utils__init__.py:397: in temporary_docker_directory tmp.cleanup() c:\python37\lib\tempfile.py:809: in cleanup _shutil.rmtree(self.name) c:\python37\lib\shutil.py:516: in rmtree return _rmtree_unsafe(path, onerror) c:\python37\lib\shutil.py:395: in _rmtree_unsafe _rmtree_unsafe(fullname, onerror) c:\python37\lib\shutil.py:404: in _rmtree_unsafe onerror(os.rmdir, path, sys.exc_info()) path = 'C:\Users\travis\AppData\Local\Temp\tmps8mll2fo\t' onerror = <function rmtree.\<locals>.onerror at 0x0000017D0230C948>
c:\python37\lib\shutil.py:402: PermissionError ========= 25 failed, 325 passed, 3 skipped, 1 error in 476.71 seconds ========= travis_time:end:07fbb22c:start=1563238899952083900,finish=1563239378532569000,duration=478580485100 ?[0K?[31;1mThe command "pytest" exited with 1.?[0m ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Get tests running on Windows using Travis CI 466996584 | |
511625212 | https://github.com/simonw/datasette/pull/557#issuecomment-511625212 | https://api.github.com/repos/simonw/datasette/issues/557 | MDEyOklzc3VlQ29tbWVudDUxMTYyNTIxMg== | simonw 9599 | 2019-07-16T01:12:14Z | 2019-07-16T01:12:14Z | OWNER | This looks useful for dealing with the |
{ "total_count": 1, "+1": 1, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Get tests running on Windows using Travis CI 466996584 | |
512126748 | https://github.com/simonw/datasette/issues/537#issuecomment-512126748 | https://api.github.com/repos/simonw/datasette/issues/537 | MDEyOklzc3VlQ29tbWVudDUxMjEyNjc0OA== | SteadBytes 14834132 | 2019-07-17T06:48:35Z | 2019-07-17T06:48:35Z | NONE | It looks as if the The sentry_asgi middleware uses the Looking at the Starlette implementation A slight issue is that ```python
Would |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Populate "endpoint" key in ASGI scope 463544206 | |
512664216 | https://github.com/simonw/datasette/issues/537#issuecomment-512664216 | https://api.github.com/repos/simonw/datasette/issues/537 | MDEyOklzc3VlQ29tbWVudDUxMjY2NDIxNg== | simonw 9599 | 2019-07-18T04:53:18Z | 2019-07-18T04:53:18Z | OWNER | Yes, |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Populate "endpoint" key in ASGI scope 463544206 | |
512930353 | https://github.com/simonw/datasette/issues/537#issuecomment-512930353 | https://api.github.com/repos/simonw/datasette/issues/537 | MDEyOklzc3VlQ29tbWVudDUxMjkzMDM1Mw== | SteadBytes 14834132 | 2019-07-18T18:20:53Z | 2019-07-18T18:34:03Z | NONE | Ok great, getting the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Populate "endpoint" key in ASGI scope 463544206 | |
513244121 | https://github.com/simonw/sqlite-utils/issues/42#issuecomment-513244121 | https://api.github.com/repos/simonw/sqlite-utils/issues/42 | MDEyOklzc3VlQ29tbWVudDUxMzI0NDEyMQ== | simonw 9599 | 2019-07-19T14:13:33Z | 2019-07-19T14:13:33Z | OWNER | So what could the interface to this look like? Especially for the CLI? One option:
Tricky thing here is that it's quite a large number of positional arguments:
It would be great if this could supported multiple columns - for if a spreadsheet has e.g. a “Company Name”, “Company Address” pair of fields that always match each other and areduplicated many times. This could be handled by creating the new table with two columns that are indexed as a unique compound key. Then you can easily get-or-create on the pairs (or triples or whatever) from the original table. Challenge here is what does the CLI syntax look like. Something like this?
Perhaps the columns in the new table are FORCED to be the same as the old ones, hence avoiding some options? Bit restrictive… maybe they default to the same but you can customize?
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
table.extract(...) method and "sqlite-utils extract" command 470345929 | |
513246124 | https://github.com/simonw/sqlite-utils/issues/42#issuecomment-513246124 | https://api.github.com/repos/simonw/sqlite-utils/issues/42 | MDEyOklzc3VlQ29tbWVudDUxMzI0NjEyNA== | simonw 9599 | 2019-07-19T14:18:35Z | 2019-07-19T14:19:40Z | OWNER | How about the Python version? That should be easier to design.
Would also be nice if there was a syntax for saying "... and use the value from this column as the primary key column in the newly created table". |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
table.extract(...) method and "sqlite-utils extract" command 470345929 | |
513246831 | https://github.com/simonw/sqlite-utils/issues/42#issuecomment-513246831 | https://api.github.com/repos/simonw/sqlite-utils/issues/42 | MDEyOklzc3VlQ29tbWVudDUxMzI0NjgzMQ== | simonw 9599 | 2019-07-19T14:20:15Z | 2019-07-19T14:20:49Z | OWNER | Since these operations could take a long time against large tables, it would be neat if there was a progress bar option for the CLI command. The operations are full table scans so calculating progress shouldn't be too difficult. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
table.extract(...) method and "sqlite-utils extract" command 470345929 | |
513262013 | https://github.com/simonw/sqlite-utils/issues/42#issuecomment-513262013 | https://api.github.com/repos/simonw/sqlite-utils/issues/42 | MDEyOklzc3VlQ29tbWVudDUxMzI2MjAxMw== | simonw 9599 | 2019-07-19T14:58:23Z | 2020-09-22T18:12:11Z | OWNER | CLI design idea:
Here we just specify the original table and column - the new extracted table will automatically be called "company_name" and will have "id" and "value" columns, by default. To set a custom extract table:
And for extracting multiple columns and renaming them on the created table, maybe something like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
table.extract(...) method and "sqlite-utils extract" command 470345929 | |
513272392 | https://github.com/simonw/datasette/issues/537#issuecomment-513272392 | https://api.github.com/repos/simonw/datasette/issues/537 | MDEyOklzc3VlQ29tbWVudDUxMzI3MjM5Mg== | simonw 9599 | 2019-07-19T15:27:03Z | 2019-07-19T15:27:03Z | OWNER | Yeah that's a good call: the Datasette plugin mechanism where middleware is wrapped around the outside doesn't appear to be compatible with the Sentry mechanism of expecting that @tomchristie is this something you've thought about? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Populate "endpoint" key in ASGI scope 463544206 | |
513273003 | https://github.com/simonw/datasette/issues/537#issuecomment-513273003 | https://api.github.com/repos/simonw/datasette/issues/537 | MDEyOklzc3VlQ29tbWVudDUxMzI3MzAwMw== | simonw 9599 | 2019-07-19T15:28:42Z | 2019-07-19T15:28:42Z | OWNER | Asked about this on Twitter: https://twitter.com/simonw/status/1152238730259791877 |
{ "total_count": 1, "+1": 0, "-1": 0, "laugh": 1, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Populate "endpoint" key in ASGI scope 463544206 | |
513279397 | https://github.com/simonw/datasette/issues/537#issuecomment-513279397 | https://api.github.com/repos/simonw/datasette/issues/537 | MDEyOklzc3VlQ29tbWVudDUxMzI3OTM5Nw== | tomchristie 647359 | 2019-07-19T15:47:57Z | 2019-07-19T15:48:09Z | NONE | The middleware implementation there works okay with a router nested inside if the scope is mutated. (Ie. "endpoint" doesn't need to exist at the point that the middleware starts running, but if it has been made available by the time an exception is thrown, then it can be used.) Starlette's usage of "endpoint" there is unilateral, rather than something I've discussed against the ASGI spec - certainly it's important for any monitoring ASGI middleware to be able to have some kind of visibility onto some limited subset of routing information, and |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Populate "endpoint" key in ASGI scope 463544206 | |
513307487 | https://github.com/simonw/datasette/issues/537#issuecomment-513307487 | https://api.github.com/repos/simonw/datasette/issues/537 | MDEyOklzc3VlQ29tbWVudDUxMzMwNzQ4Nw== | simonw 9599 | 2019-07-19T17:17:43Z | 2019-07-19T17:17:43Z | OWNER | Huh, interesting. I'd got it into my head that scope should not be mutated under any circumstances - if that's not true and it's mutable there's all kinds of useful things we could do with it. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Populate "endpoint" key in ASGI scope 463544206 | |
513317952 | https://github.com/simonw/datasette/issues/537#issuecomment-513317952 | https://api.github.com/repos/simonw/datasette/issues/537 | MDEyOklzc3VlQ29tbWVudDUxMzMxNzk1Mg== | simonw 9599 | 2019-07-19T17:49:06Z | 2019-07-19T17:49:06Z | OWNER | It strikes me that if scope is indeed meant to stay immutable the alternative way of solving this would be to add an outbound custom request header with the endpoint - |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Populate "endpoint" key in ASGI scope 463544206 | |
513373673 | https://github.com/simonw/datasette/issues/562#issuecomment-513373673 | https://api.github.com/repos/simonw/datasette/issues/562 | MDEyOklzc3VlQ29tbWVudDUxMzM3MzY3Mw== | simonw 9599 | 2019-07-19T20:52:04Z | 2019-07-19T20:52:04Z | OWNER | I'll do this as part of #551 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Facet by array shouldn't suggest for arrays that are not arrays-of-strings 470542938 | |
513437463 | https://github.com/dogsheep/healthkit-to-sqlite/issues/1#issuecomment-513437463 | https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/1 | MDEyOklzc3VlQ29tbWVudDUxMzQzNzQ2Mw== | simonw 9599 | 2019-07-20T05:19:59Z | 2019-07-20T05:19:59Z | MEMBER | I ran xml_analyser against the XML HealthKit
The most interesting bit is this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use XML Analyser to figure out the structure of the export XML 470637068 | |
513439411 | https://github.com/dogsheep/healthkit-to-sqlite/issues/2#issuecomment-513439411 | https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/2 | MDEyOklzc3VlQ29tbWVudDUxMzQzOTQxMQ== | simonw 9599 | 2019-07-20T05:58:57Z | 2019-07-20T05:58:57Z | MEMBER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Import workouts 470637152 | |
513439736 | https://github.com/simonw/datasette/issues/537#issuecomment-513439736 | https://api.github.com/repos/simonw/datasette/issues/537 | MDEyOklzc3VlQ29tbWVudDUxMzQzOTczNg== | SteadBytes 14834132 | 2019-07-20T06:05:01Z | 2019-07-20T06:05:01Z | NONE | The asgi spec doesn't explicitly specify (at least as far as I can tell) whether the scope is immutable/mutable https://asgi.readthedocs.io/en/latest/specs/lifespan.html#scope . @simonw using a header for this would be a nice approach. It would also potentially increase the portability of any middleware/plugins/clients across different applications/frameworks as it's not tied directly to an asgi implementation |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Populate "endpoint" key in ASGI scope 463544206 | |
513440090 | https://github.com/dogsheep/healthkit-to-sqlite/issues/4#issuecomment-513440090 | https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/4 | MDEyOklzc3VlQ29tbWVudDUxMzQ0MDA5MA== | simonw 9599 | 2019-07-20T06:11:50Z | 2019-07-20T06:11:50Z | MEMBER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Import Records 470640505 | ||
513442743 | https://github.com/simonw/datasette/issues/537#issuecomment-513442743 | https://api.github.com/repos/simonw/datasette/issues/537 | MDEyOklzc3VlQ29tbWVudDUxMzQ0Mjc0Mw== | tomchristie 647359 | 2019-07-20T06:50:47Z | 2019-07-20T06:50:47Z | NONE | Right now the spec does say “copy the scope, rather than mutate it” https://asgi.readthedocs.io/en/latest/specs/main.html#middleware I wouldn’t be surprised if that there’s room for discussion on evolving the exact language there. There’s obvs a nice element to the strictness there, tho practically I’m not sure it’s something that implementations will follow, and its not something that Starlette chooses to abide by. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Populate "endpoint" key in ASGI scope 463544206 | |
513446227 | https://github.com/simonw/datasette/issues/537#issuecomment-513446227 | https://api.github.com/repos/simonw/datasette/issues/537 | MDEyOklzc3VlQ29tbWVudDUxMzQ0NjIyNw== | SteadBytes 14834132 | 2019-07-20T07:50:44Z | 2019-07-20T07:50:44Z | NONE | Oh yes well spotted thank you 😁 I agree that the strictness would be nice as it could help to avoid different middleware altering the scope in incompatible ways. However I do also agree that it's likely for not all implementations to follow 🤔 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Populate "endpoint" key in ASGI scope 463544206 | |
513481493 | https://github.com/simonw/sqlite-utils/issues/43#issuecomment-513481493 | https://api.github.com/repos/simonw/sqlite-utils/issues/43 | MDEyOklzc3VlQ29tbWVudDUxMzQ4MTQ5Mw== | simonw 9599 | 2019-07-20T16:34:54Z | 2019-07-20T16:34:54Z | OWNER | Here's the implementation in And here's where |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
.add_column() doesn't match indentation of initial creation 470691999 | |
513481607 | https://github.com/simonw/sqlite-utils/issues/43#issuecomment-513481607 | https://api.github.com/repos/simonw/sqlite-utils/issues/43 | MDEyOklzc3VlQ29tbWVudDUxMzQ4MTYwNw== | simonw 9599 | 2019-07-20T16:36:34Z | 2019-07-20T16:36:34Z | OWNER | Hmm... is it even possible to fix this within sqlite-utils? Maybe this is a SQLite implementation detail. It's possible to update the schema itself - that's how we add missing foreign key constraints - but it seems a little bit of overkill to use the writable schema when adding a new column JUST to get prettier indentation: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
.add_column() doesn't match indentation of initial creation 470691999 | |
513514978 | https://github.com/dogsheep/healthkit-to-sqlite/issues/5#issuecomment-513514978 | https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/5 | MDEyOklzc3VlQ29tbWVudDUxMzUxNDk3OA== | simonw 9599 | 2019-07-21T02:55:12Z | 2019-07-21T02:55:12Z | MEMBER | I'm going to show this by default. Users can pass |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add progress bar 470691622 | |
513625406 | https://github.com/dogsheep/healthkit-to-sqlite/issues/5#issuecomment-513625406 | https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/5 | MDEyOklzc3VlQ29tbWVudDUxMzYyNTQwNg== | simonw 9599 | 2019-07-22T03:20:16Z | 2019-07-22T03:20:16Z | MEMBER | It now renders like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add progress bar 470691622 | |
513626742 | https://github.com/dogsheep/healthkit-to-sqlite/issues/6#issuecomment-513626742 | https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/6 | MDEyOklzc3VlQ29tbWVudDUxMzYyNjc0Mg== | simonw 9599 | 2019-07-22T03:28:55Z | 2019-07-22T03:28:55Z | MEMBER | Here's what it looks like now as separate tables: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Break up records into different tables for each type 470856782 | |
513652597 | https://github.com/simonw/datasette/issues/537#issuecomment-513652597 | https://api.github.com/repos/simonw/datasette/issues/537 | MDEyOklzc3VlQ29tbWVudDUxMzY1MjU5Nw== | SteadBytes 14834132 | 2019-07-22T06:03:18Z | 2019-07-22T06:03:18Z | NONE | @simonw do you think it is still worth populating the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Populate "endpoint" key in ASGI scope 463544206 | |
513952182 | https://github.com/simonw/sqlite-utils/issues/3#issuecomment-513952182 | https://api.github.com/repos/simonw/sqlite-utils/issues/3 | MDEyOklzc3VlQ29tbWVudDUxMzk1MjE4Mg== | simonw 9599 | 2019-07-22T20:58:55Z | 2019-07-22T20:58:55Z | OWNER | Closing this as WONTFIX - it's not really an actionable ticket. I should still research these in the future though. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Experiment with contentless FTS tables 351845423 | |
514162499 | https://github.com/simonw/sqlite-utils/issues/44#issuecomment-514162499 | https://api.github.com/repos/simonw/sqlite-utils/issues/44 | MDEyOklzc3VlQ29tbWVudDUxNDE2MjQ5OQ== | simonw 9599 | 2019-07-23T11:01:45Z | 2019-07-23T11:01:45Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Utilities for building lookup tables 471628483 | |
514162930 | https://github.com/simonw/sqlite-utils/issues/44#issuecomment-514162930 | https://api.github.com/repos/simonw/sqlite-utils/issues/44 | MDEyOklzc3VlQ29tbWVudDUxNDE2MjkzMA== | simonw 9599 | 2019-07-23T11:03:03Z | 2019-07-23T11:03:16Z | OWNER | I considered keyword arguments for this, but I am going with a dictionary instead - for two reasons:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Utilities for building lookup tables 471628483 | |
514202279 | https://github.com/simonw/sqlite-utils/issues/43#issuecomment-514202279 | https://api.github.com/repos/simonw/sqlite-utils/issues/43 | MDEyOklzc3VlQ29tbWVudDUxNDIwMjI3OQ== | simonw 9599 | 2019-07-23T13:09:05Z | 2019-07-23T13:09:05Z | OWNER | Won't fix, I don't think this can be done in an elegant way. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
.add_column() doesn't match indentation of initial creation 470691999 | |
514273140 | https://github.com/simonw/sqlite-utils/issues/46#issuecomment-514273140 | https://api.github.com/repos/simonw/sqlite-utils/issues/46 | MDEyOklzc3VlQ29tbWVudDUxNDI3MzE0MA== | simonw 9599 | 2019-07-23T15:57:53Z | 2019-07-23T15:57:53Z | OWNER | This will play very well with the new ability to specify these arguments in the class constructor, like so: ```python table = db.table("trees", extracts={"species_id": "Species"}) table.insert_all([{ "id": 1, "species_id": "Oak", }, { "id": 2, "species_id": "Oak", }, { "id": 3, "species_id": "Palm", }]) |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
extracts= option for insert/update/etc 471780443 | |
514339130 | https://github.com/simonw/sqlite-utils/pull/38#issuecomment-514339130 | https://api.github.com/repos/simonw/sqlite-utils/issues/38 | MDEyOklzc3VlQ29tbWVudDUxNDMzOTEzMA== | simonw 9599 | 2019-07-23T18:57:33Z | 2019-07-23T18:57:33Z | OWNER | This should switch to using |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
table.update() method 467862459 | |
514496725 | https://github.com/dogsheep/healthkit-to-sqlite/issues/7#issuecomment-514496725 | https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/7 | MDEyOklzc3VlQ29tbWVudDUxNDQ5NjcyNQ== | simonw 9599 | 2019-07-24T06:20:59Z | 2019-07-24T06:20:59Z | MEMBER | I'm using https://pypi.org/project/memory-profiler/ to explore this in more detail:
Then:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Script uses a lot of RAM 472097220 | |
514498221 | https://github.com/dogsheep/healthkit-to-sqlite/issues/7#issuecomment-514498221 | https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/7 | MDEyOklzc3VlQ29tbWVudDUxNDQ5ODIyMQ== | simonw 9599 | 2019-07-24T06:26:49Z | 2019-07-24T06:26:49Z | MEMBER | Adding |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Script uses a lot of RAM 472097220 | |
514500253 | https://github.com/dogsheep/healthkit-to-sqlite/issues/7#issuecomment-514500253 | https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/7 | MDEyOklzc3VlQ29tbWVudDUxNDUwMDI1Mw== | simonw 9599 | 2019-07-24T06:34:28Z | 2019-07-24T06:34:28Z | MEMBER | Clearing the root element each time saved even more: |
{ "total_count": 2, "+1": 0, "-1": 0, "laugh": 0, "hooray": 2, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Script uses a lot of RAM 472097220 | |
514509307 | https://github.com/simonw/sqlite-utils/issues/49#issuecomment-514509307 | https://api.github.com/repos/simonw/sqlite-utils/issues/49 | MDEyOklzc3VlQ29tbWVudDUxNDUwOTMwNw== | simonw 9599 | 2019-07-24T07:09:43Z | 2019-07-24T07:10:21Z | OWNER | This syntax should be shared with #42 as much as possible. Maybe something based on a namedtuple would work, since those are already used in the library.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
extracts= should support multiple-column extracts 472115381 | |
514745798 | https://github.com/dogsheep/healthkit-to-sqlite/issues/9#issuecomment-514745798 | https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/9 | MDEyOklzc3VlQ29tbWVudDUxNDc0NTc5OA== | tholo 166463 | 2019-07-24T18:25:36Z | 2019-07-24T18:25:36Z | NONE | This is on macOS 10.14.6, with Python 3.7.4, packages in the virtual environment: ``` Package Version aiofiles 0.4.0 Click 7.0 click-default-group 1.2.1 datasette 0.29.2 h11 0.8.1 healthkit-to-sqlite 0.3.1 httptools 0.0.13 hupper 1.8.1 importlib-metadata 0.18 Jinja2 2.10.1 MarkupSafe 1.1.1 Pint 0.8.1 pip 19.2.1 pluggy 0.12.0 setuptools 41.0.1 sqlite-utils 1.7 tabulate 0.8.3 uvicorn 0.8.4 uvloop 0.12.2 websockets 7.0 zipp 0.5.2 ``` |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Too many SQL variables 472429048 | |
515226724 | https://github.com/dogsheep/healthkit-to-sqlite/issues/9#issuecomment-515226724 | https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/9 | MDEyOklzc3VlQ29tbWVudDUxNTIyNjcyNA== | simonw 9599 | 2019-07-25T21:46:01Z | 2019-07-25T21:46:01Z | MEMBER | I can work around this here (prior to the fix in sqlite-utils) by setting the batch size to something a bit lower here. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Too many SQL variables 472429048 | |
515322294 | https://github.com/dogsheep/healthkit-to-sqlite/issues/9#issuecomment-515322294 | https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/9 | MDEyOklzc3VlQ29tbWVudDUxNTMyMjI5NA== | simonw 9599 | 2019-07-26T06:07:12Z | 2019-07-26T06:07:12Z | MEMBER | @tholo this should be fixed in just-released version 0.3.2 - could you run a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Too many SQL variables 472429048 | |
515370687 | https://github.com/dogsheep/healthkit-to-sqlite/issues/9#issuecomment-515370687 | https://api.github.com/repos/dogsheep/healthkit-to-sqlite/issues/9 | MDEyOklzc3VlQ29tbWVudDUxNTM3MDY4Nw== | tholo 166463 | 2019-07-26T09:01:19Z | 2019-07-26T09:01:19Z | NONE | Yes, that did fix the issue I was seeing — it will now import my complete HealthKit data. Thorsten
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Too many SQL variables 472429048 | |
515751719 | https://github.com/simonw/sqlite-utils/issues/50#issuecomment-515751719 | https://api.github.com/repos/simonw/sqlite-utils/issues/50 | MDEyOklzc3VlQ29tbWVudDUxNTc1MTcxOQ== | simonw 9599 | 2019-07-28T10:40:11Z | 2019-07-28T10:40:11Z | OWNER | I think the fix here is for me to switch to using |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"Too many SQL variables" on large inserts 473083260 | |
515752129 | https://github.com/simonw/sqlite-utils/issues/50#issuecomment-515752129 | https://api.github.com/repos/simonw/sqlite-utils/issues/50 | MDEyOklzc3VlQ29tbWVudDUxNTc1MjEyOQ== | simonw 9599 | 2019-07-28T10:46:49Z | 2019-07-28T10:46:49Z | OWNER | The problem with
So I think I need to continue to use my existing way of executing bulk inserts (with a giant repeated |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"Too many SQL variables" on large inserts 473083260 | |
515752204 | https://github.com/simonw/sqlite-utils/issues/50#issuecomment-515752204 | https://api.github.com/repos/simonw/sqlite-utils/issues/50 | MDEyOklzc3VlQ29tbWVudDUxNTc1MjIwNA== | simonw 9599 | 2019-07-28T10:48:14Z | 2019-07-28T10:48:14Z | OWNER | Here's the diff where I tried to use |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"Too many SQL variables" on large inserts 473083260 | |
515756563 | https://github.com/simonw/sqlite-utils/pull/51#issuecomment-515756563 | https://api.github.com/repos/simonw/sqlite-utils/issues/51 | MDEyOklzc3VlQ29tbWVudDUxNTc1NjU2Mw== | simonw 9599 | 2019-07-28T11:56:10Z | 2019-07-28T11:56:10Z | OWNER | Interesting. The tests failed presumably because the version of SQLite I am running on Travis CI doesn't have that same 999 limit. I'm going to enforce the 999 limit within the library itself, to discourage people from writing code which will fail if it runs on a host that DOES have that limit. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Fix for too many SQL variables, closes #50 473733752 | |
517927854 | https://github.com/simonw/sqlite-utils/issues/23#issuecomment-517927854 | https://api.github.com/repos/simonw/sqlite-utils/issues/23 | MDEyOklzc3VlQ29tbWVudDUxNzkyNzg1NA== | simonw 9599 | 2019-08-03T14:17:12Z | 2019-08-03T14:17:12Z | OWNER | It would be neat if this could interact with the lookup table mechanism introduced in #44 Maybe like this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Syntactic sugar for creating m2m records 449565204 | |
517936126 | https://github.com/simonw/datasette/issues/566#issuecomment-517936126 | https://api.github.com/repos/simonw/datasette/issues/566 | MDEyOklzc3VlQ29tbWVudDUxNzkzNjEyNg== | dvot197007 8330931 | 2019-08-03T16:13:36Z | 2019-08-03T16:13:36Z | NONE | This example now works on my other machine when running from the anaconda prompt. So I'm not sure if this is actually a datasette issue or not. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Unexpected keyword argument 'hidden' 476437213 | |
517971623 | https://github.com/simonw/sqlite-utils/issues/23#issuecomment-517971623 | https://api.github.com/repos/simonw/sqlite-utils/issues/23 | MDEyOklzc3VlQ29tbWVudDUxNzk3MTYyMw== | simonw 9599 | 2019-08-04T03:54:58Z | 2019-08-04T03:54:58Z | OWNER | Released in version 1.9. Documentation is here: https://sqlite-utils.readthedocs.io/en/stable/python-api.html#working-with-many-to-many-relationships |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Syntactic sugar for creating m2m records 449565204 | |
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 | |
522236053 | https://github.com/simonw/sqlite-utils/issues/54#issuecomment-522236053 | https://api.github.com/repos/simonw/sqlite-utils/issues/54 | MDEyOklzc3VlQ29tbWVudDUyMjIzNjA1Mw== | simonw 9599 | 2019-08-17T13:22:26Z | 2019-08-17T13:22:26Z | OWNER | Good catch: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to list views, and to access db["view_name"].rows / rows_where / etc 480961330 | |
522236218 | https://github.com/simonw/datasette/issues/569#issuecomment-522236218 | https://api.github.com/repos/simonw/datasette/issues/569 | MDEyOklzc3VlQ29tbWVudDUyMjIzNjIxOA== | simonw 9599 | 2019-08-17T13:24:50Z | 2019-08-17T13:24:50Z | OWNER | I think what I want it a mechanism where a thread can say "give me a connection for database X" and it either gets back connection to X instantly OR a new connection to X is created and returned OR it blocks (because a certain number of connections to that database exist already) until another thread returns their connection OR it times out and returns an error. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
More advanced connection pooling 481885279 | |
522238063 | https://github.com/simonw/sqlite-utils/pull/55#issuecomment-522238063 | https://api.github.com/repos/simonw/sqlite-utils/issues/55 | MDEyOklzc3VlQ29tbWVudDUyMjIzODA2Mw== | simonw 9599 | 2019-08-17T13:42:40Z | 2019-08-17T13:42:40Z | OWNER | I still need to implement the part of this where certain actions against views (like updating/inserting) are not allowed. I think the better way to do that is to introduce a new class - This will get a bit more complicated - maybe I need both Table and View to extend a common subclass here? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to introspect and run queries against views 481887482 | |
522238222 | https://github.com/simonw/datasette/issues/569#issuecomment-522238222 | https://api.github.com/repos/simonw/datasette/issues/569 | MDEyOklzc3VlQ29tbWVudDUyMjIzODIyMg== | simonw 9599 | 2019-08-17T13:44:24Z | 2019-08-17T13:45:10Z | OWNER | Potential API design:
This could accept multiple database names for the case where I want to join across databases:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
More advanced connection pooling 481885279 | |
524294383 | https://github.com/simonw/sqlite-utils/issues/54#issuecomment-524294383 | https://api.github.com/repos/simonw/sqlite-utils/issues/54 | MDEyOklzc3VlQ29tbWVudDUyNDI5NDM4Mw== | simonw 9599 | 2019-08-23T12:20:15Z | 2019-08-23T12:20:15Z | OWNER | Closed by #55 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to list views, and to access db["view_name"].rows / rows_where / etc 480961330 | |
524294928 | https://github.com/simonw/sqlite-utils/issues/54#issuecomment-524294928 | https://api.github.com/repos/simonw/sqlite-utils/issues/54 | MDEyOklzc3VlQ29tbWVudDUyNDI5NDkyOA== | simonw 9599 | 2019-08-23T12:22:11Z | 2019-08-23T12:22:11Z | OWNER | Documentation is here: https://sqlite-utils.readthedocs.io/en/latest/python-api.html#listing-views |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to list views, and to access db["view_name"].rows / rows_where / etc 480961330 | |
524297256 | https://github.com/simonw/sqlite-utils/issues/54#issuecomment-524297256 | https://api.github.com/repos/simonw/sqlite-utils/issues/54 | MDEyOklzc3VlQ29tbWVudDUyNDI5NzI1Ng== | simonw 9599 | 2019-08-23T12:30:20Z | 2019-08-23T12:30:20Z | OWNER | Released in 1.10: https://sqlite-utils.readthedocs.io/en/stable/changelog.html#v1-10 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to list views, and to access db["view_name"].rows / rows_where / etc 480961330 | |
524300388 | https://github.com/simonw/sqlite-utils/issues/54#issuecomment-524300388 | https://api.github.com/repos/simonw/sqlite-utils/issues/54 | MDEyOklzc3VlQ29tbWVudDUyNDMwMDM4OA== | ftrain 20264 | 2019-08-23T12:41:09Z | 2019-08-23T12:41:09Z | NONE | Extremely cool and easy to understand. Thank you! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to list views, and to access db["view_name"].rows / rows_where / etc 480961330 | |
526701674 | https://github.com/dogsheep/swarm-to-sqlite/issues/2#issuecomment-526701674 | https://api.github.com/repos/dogsheep/swarm-to-sqlite/issues/2 | MDEyOklzc3VlQ29tbWVudDUyNjcwMTY3NA== | simonw 9599 | 2019-08-30T18:24:26Z | 2019-08-30T18:24:26Z | MEMBER | I renamed |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
--save option to dump checkins to a JSON file on disk 487598468 | |
526794367 | https://github.com/simonw/sqlite-utils/issues/27#issuecomment-526794367 | https://api.github.com/repos/simonw/sqlite-utils/issues/27 | MDEyOklzc3VlQ29tbWVudDUyNjc5NDM2Nw== | simonw 9599 | 2019-08-31T03:05:18Z | 2019-08-31T03:06:10Z | OWNER | Potential syntax:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
sqlite-utils create-table command 455496504 | |
526853542 | https://github.com/dogsheep/swarm-to-sqlite/issues/4#issuecomment-526853542 | https://api.github.com/repos/dogsheep/swarm-to-sqlite/issues/4 | MDEyOklzc3VlQ29tbWVudDUyNjg1MzU0Mg== | simonw 9599 | 2019-08-31T18:06:32Z | 2019-08-31T18:06:32Z | MEMBER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Online tool for getting a Foursquare OAuth token 487601121 | ||
527090411 | https://github.com/simonw/sqlite-utils/pull/56#issuecomment-527090411 | https://api.github.com/repos/simonw/sqlite-utils/issues/56 | MDEyOklzc3VlQ29tbWVudDUyNzA5MDQxMQ== | simonw 9599 | 2019-09-02T10:10:48Z | 2019-09-02T10:10:48Z | OWNER | Good spot, thanks! Would be useful to add a test as well, derived from your above example. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Escape the table name in populate_fts and search. 487847945 | |
527091278 | https://github.com/simonw/sqlite-utils/pull/57#issuecomment-527091278 | https://api.github.com/repos/simonw/sqlite-utils/issues/57 | MDEyOklzc3VlQ29tbWVudDUyNzA5MTI3OA== | simonw 9599 | 2019-09-02T10:13:32Z | 2019-09-02T10:13:32Z | OWNER | This is brilliant! One tiny suggestion: I like |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add triggers while enabling FTS 487987958 | |
527200332 | https://github.com/dogsheep/swarm-to-sqlite/issues/3#issuecomment-527200332 | https://api.github.com/repos/dogsheep/swarm-to-sqlite/issues/3 | MDEyOklzc3VlQ29tbWVudDUyNzIwMDMzMg== | simonw 9599 | 2019-09-02T16:32:20Z | 2019-09-02T16:32:39Z | MEMBER | Also needed: an option for "fetch all checkins created within the last X days". This should help provide support for that Swarm feature where you can retroactively checkin to places in the past. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Option to fetch only checkins more recent than the current max checkin 487600595 | |
527209840 | https://github.com/simonw/sqlite-utils/pull/56#issuecomment-527209840 | https://api.github.com/repos/simonw/sqlite-utils/issues/56 | MDEyOklzc3VlQ29tbWVudDUyNzIwOTg0MA== | amjith 49260 | 2019-09-02T17:23:21Z | 2019-09-02T17:23:21Z | CONTRIBUTOR | I have updated the other PR with the changes from this one and added tests. I have also changed the escaping from double quotes to brackets. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Escape the table name in populate_fts and search. 487847945 | |
527211047 | https://github.com/simonw/sqlite-utils/pull/57#issuecomment-527211047 | https://api.github.com/repos/simonw/sqlite-utils/issues/57 | MDEyOklzc3VlQ29tbWVudDUyNzIxMTA0Nw== | amjith 49260 | 2019-09-02T17:30:43Z | 2019-09-02T17:30:43Z | CONTRIBUTOR | I have merged the other PR (#56) into this one. I have incorporated your suggestions. Cheers! |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add triggers while enabling FTS 487987958 | |
527258212 | https://github.com/simonw/sqlite-utils/pull/57#issuecomment-527258212 | https://api.github.com/repos/simonw/sqlite-utils/issues/57 | MDEyOklzc3VlQ29tbWVudDUyNzI1ODIxMg== | simonw 9599 | 2019-09-02T23:40:56Z | 2019-09-02T23:40:56Z | OWNER | This is fantastic, thanks so much. I spotted a Datasette bug triggered by this: Datasette has its own version of the It's a bug in Datasette, not sqlite-utils - so I'll open an issue there. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add triggers while enabling FTS 487987958 | |
527266687 | https://github.com/simonw/datasette/issues/560#issuecomment-527266687 | https://api.github.com/repos/simonw/datasette/issues/560 | MDEyOklzc3VlQ29tbWVudDUyNzI2NjY4Nw== | simonw 9599 | 2019-09-03T01:03:02Z | 2019-09-03T01:03:02Z | OWNER | This is released in 0.29.3 Compare https://v0-29.datasette.io/fixtures (broken) with https://v0-29-3.datasette.io/fixtures (fixed) |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
CodeMirror fails to load on database page 467790646 | |
527266798 | https://github.com/simonw/sqlite-utils/pull/57#issuecomment-527266798 | https://api.github.com/repos/simonw/sqlite-utils/issues/57 | MDEyOklzc3VlQ29tbWVudDUyNzI2Njc5OA== | simonw 9599 | 2019-09-03T01:03:59Z | 2019-09-03T01:03:59Z | OWNER | Released in 1.11 - thanks again! https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v1-11 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Add triggers while enabling FTS 487987958 | |
527682713 | https://github.com/dogsheep/twitter-to-sqlite/issues/4#issuecomment-527682713 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/4 | MDEyOklzc3VlQ29tbWVudDUyNzY4MjcxMw== | simonw 9599 | 2019-09-03T23:48:57Z | 2019-09-03T23:48:57Z | MEMBER | One interesting challenge here is that the JSON format for tweets in the archive is subtly different from the JSON format currently returned by the API. If we want to keep the tweets in the same database table (which feels like the right thing to me) we'll need to handle this. One thing we can do is have a column for We can also ensure that tweets from the API always over-write the version that came from the archive (using |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Command for importing data from a Twitter Export file 488835586 | |
527684202 | https://github.com/dogsheep/twitter-to-sqlite/issues/5#issuecomment-527684202 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/5 | MDEyOklzc3VlQ29tbWVudDUyNzY4NDIwMg== | simonw 9599 | 2019-09-03T23:56:28Z | 2019-09-03T23:56:28Z | MEMBER | I previously used betamax here: https://github.com/simonw/github-contents/blob/master/test_github_contents.py |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Write tests that simulate the Twitter API 488874815 | |
527954898 | https://github.com/dogsheep/twitter-to-sqlite/issues/2#issuecomment-527954898 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/2 | MDEyOklzc3VlQ29tbWVudDUyNzk1NDg5OA== | simonw 9599 | 2019-09-04T15:31:46Z | 2019-09-04T15:31:46Z | MEMBER | I'm going to call this |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"twitter-to-sqlite user-timeline" command for pulling tweets by a specific user 488833698 | |
527955302 | https://github.com/dogsheep/twitter-to-sqlite/issues/2#issuecomment-527955302 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/2 | MDEyOklzc3VlQ29tbWVudDUyNzk1NTMwMg== | simonw 9599 | 2019-09-04T15:32:39Z | 2019-09-04T15:32:39Z | MEMBER | Rate limit is 900 / 15 minutes which is 1 call per second. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"twitter-to-sqlite user-timeline" command for pulling tweets by a specific user 488833698 | |
527990908 | https://github.com/dogsheep/twitter-to-sqlite/issues/2#issuecomment-527990908 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/2 | MDEyOklzc3VlQ29tbWVudDUyNzk5MDkwOA== | simonw 9599 | 2019-09-04T16:57:24Z | 2019-09-04T16:57:24Z | MEMBER | I just tried this using |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
"twitter-to-sqlite user-timeline" command for pulling tweets by a specific user 488833698 | |
528112729 | https://github.com/simonw/datasette/issues/572#issuecomment-528112729 | https://api.github.com/repos/simonw/datasette/issues/572 | MDEyOklzc3VlQ29tbWVudDUyODExMjcyOQ== | simonw 9599 | 2019-09-04T22:20:22Z | 2019-09-04T22:20:38Z | OWNER | The bug is here: https://github.com/simonw/datasette/blob/9743e1d91b5f0a2b3c1c0bd6ffce8739341f43c4/datasette/templates/_description_source_license.html#L24
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Error running datasette publish with just --source_url 489429284 | |
529239307 | https://github.com/dogsheep/twitter-to-sqlite/issues/8#issuecomment-529239307 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/8 | MDEyOklzc3VlQ29tbWVudDUyOTIzOTMwNw== | simonw 9599 | 2019-09-08T20:36:49Z | 2019-09-08T20:36:49Z | MEMBER |
If you omit the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
--sql and --attach options for feeding commands from SQL queries 490803176 | |
529240286 | https://github.com/dogsheep/twitter-to-sqlite/issues/8#issuecomment-529240286 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/8 | MDEyOklzc3VlQ29tbWVudDUyOTI0MDI4Ng== | simonw 9599 | 2019-09-08T20:48:33Z | 2019-09-08T20:48:33Z | MEMBER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
--sql and --attach options for feeding commands from SQL queries 490803176 | |
530028567 | https://github.com/dogsheep/twitter-to-sqlite/issues/9#issuecomment-530028567 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/9 | MDEyOklzc3VlQ29tbWVudDUzMDAyODU2Nw== | simonw 9599 | 2019-09-10T16:59:25Z | 2019-09-10T16:59:25Z | MEMBER | By default in SQLite foreign key constraints are not enforced (you need to run We will take advantage of this - even though the In the future we may add a command that can backfill missing user records. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
followers-ids and friends-ids subcommands 491791152 | |
530417631 | https://github.com/dogsheep/twitter-to-sqlite/issues/8#issuecomment-530417631 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/8 | MDEyOklzc3VlQ29tbWVudDUzMDQxNzYzMQ== | simonw 9599 | 2019-09-11T14:52:44Z | 2019-09-14T19:09:22Z | MEMBER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
--sql and --attach options for feeding commands from SQL queries 490803176 | |
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 | |
531404891 | https://github.com/dogsheep/twitter-to-sqlite/issues/8#issuecomment-531404891 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/8 | MDEyOklzc3VlQ29tbWVudDUzMTQwNDg5MQ== | simonw 9599 | 2019-09-13T22:01:57Z | 2019-09-13T22:01:57Z | MEMBER | I also wrote about this in https://simonwillison.net/2019/Sep/13/weeknotestwitter-sqlite-datasette-rure/ |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
--sql and --attach options for feeding commands from SQL queries 490803176 | |
531516956 | https://github.com/dogsheep/github-to-sqlite/issues/3#issuecomment-531516956 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/3 | MDEyOklzc3VlQ29tbWVudDUzMTUxNjk1Ng== | simonw 9599 | 2019-09-14T21:56:31Z | 2019-09-14T21:56:31Z | MEMBER | https://api.github.com/users/simonw/repos It would be useful to be able to fetch stargazers, forks etc as well. Not sure if that should be a separate command or a Probably a separate command since |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Command to fetch all repos belonging to a user or organization 493670426 | |
531517083 | https://github.com/dogsheep/github-to-sqlite/issues/3#issuecomment-531517083 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/3 | MDEyOklzc3VlQ29tbWVudDUzMTUxNzA4Mw== | simonw 9599 | 2019-09-14T21:58:42Z | 2019-09-14T21:58:42Z | MEMBER | Split stargazers into #4 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Command to fetch all repos belonging to a user or organization 493670426 | |
531517138 | https://github.com/dogsheep/github-to-sqlite/issues/4#issuecomment-531517138 | https://api.github.com/repos/dogsheep/github-to-sqlite/issues/4 | MDEyOklzc3VlQ29tbWVudDUzMTUxNzEzOA== | simonw 9599 | 2019-09-14T21:59:59Z | 2019-09-14T21:59:59Z | MEMBER | Paginate through https://api.github.com/repos/simonw/datasette/stargazers Send |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Command to fetch stargazers for one or more repos 493670730 | |
533818697 | https://github.com/simonw/sqlite-utils/issues/61#issuecomment-533818697 | https://api.github.com/repos/simonw/sqlite-utils/issues/61 | MDEyOklzc3VlQ29tbWVudDUzMzgxODY5Nw== | amjith 49260 | 2019-09-21T18:09:01Z | 2019-09-21T18:09:28Z | CONTRIBUTOR | @witeshadow The library version doesn't have helpers around CSV (at least not from what I can see in the code). But here's a snippet that makes it easy to insert from CSV using the library. ``` import csv from sqlite_utils import Database CSV Readercsv_file = open("filename.csv") # open the csv file. reader = csv.reader(csv_file) # Create a CSV reader headers = next(reader) # First line is the header docs = (dict(zip(headers, row)) for row in reader) Now you can use the
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
importing CSV to SQLite as library 491219910 | |
537711455 | https://github.com/simonw/datasette/issues/569#issuecomment-537711455 | https://api.github.com/repos/simonw/datasette/issues/569 | MDEyOklzc3VlQ29tbWVudDUzNzcxMTQ1NQ== | simonw 9599 | 2019-10-02T22:41:12Z | 2019-10-02T22:41:12Z | OWNER | I'm going to refactor the They currently live on the I think I'll put them on the |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
More advanced connection pooling 481885279 | |
537712384 | https://github.com/simonw/datasette/issues/569#issuecomment-537712384 | https://api.github.com/repos/simonw/datasette/issues/569 | MDEyOklzc3VlQ29tbWVudDUzNzcxMjM4NA== | simonw 9599 | 2019-10-02T22:44:36Z | 2019-10-02T22:44:36Z | OWNER | I'm going to simplify things a bunch by continuing to ignore the cross-database joining issue #283 - I'll post some notes there on my latest thinking. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
More advanced connection pooling 481885279 | |
537716955 | https://github.com/simonw/datasette/issues/283#issuecomment-537716955 | https://api.github.com/repos/simonw/datasette/issues/283 | MDEyOklzc3VlQ29tbWVudDUzNzcxNjk1NQ== | simonw 9599 | 2019-10-02T23:02:15Z | 2019-10-02T23:02:15Z | OWNER | I've been thinking pretty hard about this as part of #569. My big concerns are:
I think the best way to do this is to say that cross-database joins will only be available against the If this proves to be a problem when hundreds of files are attached to a Datasette Library instance (#417) then maybe cross database joins are handled (in that case) by the authenticated user selecting which ones to ?_attach= and detaching them at the end of the request. Also perhaps limit to joining across a maximum of 3 databases at once in this case. I can probably avoid the scariest negative consequences of cross-database joins by having them turned off by default for signed-out users. The datasette-on-my-laptop or authenticated Datasette Library cases can be opt-in and can be a little less locked down. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Support cross-database joins 325958506 | |
538173651 | https://github.com/simonw/datasette/issues/454#issuecomment-538173651 | https://api.github.com/repos/simonw/datasette/issues/454 | MDEyOklzc3VlQ29tbWVudDUzODE3MzY1MQ== | simonw 9599 | 2019-10-03T23:59:56Z | 2019-10-03T23:59:56Z | OWNER | I built and shipped this back in July: https://github.com/simonw/datasette-cors |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Plugin for allowing CORS from specified hosts 440437037 | |
538173983 | https://github.com/simonw/datasette/issues/577#issuecomment-538173983 | https://api.github.com/repos/simonw/datasette/issues/577 | MDEyOklzc3VlQ29tbWVudDUzODE3Mzk4Mw== | simonw 9599 | 2019-10-04T00:01:18Z | 2019-10-04T00:01:18Z | OWNER | Here's the horrific (stack inspecting) workaround I came up with for a prototype of |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Utility mechanism for plugins to render templates 497171390 | |
538672413 | https://github.com/simonw/datasette/issues/581#issuecomment-538672413 | https://api.github.com/repos/simonw/datasette/issues/581 | MDEyOklzc3VlQ29tbWVudDUzODY3MjQxMw== | simonw 9599 | 2019-10-05T17:45:04Z | 2019-10-05T17:45:04Z | OWNER | The |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign register_output_renderer callback 502993509 | |
538711918 | https://github.com/dogsheep/twitter-to-sqlite/issues/11#issuecomment-538711918 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/11 | MDEyOklzc3VlQ29tbWVudDUzODcxMTkxOA== | simonw 9599 | 2019-10-06T04:54:17Z | 2019-10-06T04:54:17Z | MEMBER | Shipped in 0.6. Here's the documentation: https://github.com/dogsheep/twitter-to-sqlite#capturing-tweets-in-real-time-with-track-and-follow |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Commands for recording real-time tweets from the streaming API 503045221 | |
538760447 | https://github.com/simonw/datasette/issues/93#issuecomment-538760447 | https://api.github.com/repos/simonw/datasette/issues/93 | MDEyOklzc3VlQ29tbWVudDUzODc2MDQ0Nw== | simonw 9599 | 2019-10-06T15:56:01Z | 2019-10-06T15:56:01Z | OWNER | Relevant conversation on Twitter: https://twitter.com/simonw/status/1180866651962560512?s=21 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Package as standalone binary 273944952 | |
538766388 | https://github.com/simonw/datasette/issues/583#issuecomment-538766388 | https://api.github.com/repos/simonw/datasette/issues/583 | MDEyOklzc3VlQ29tbWVudDUzODc2NjM4OA== | simonw 9599 | 2019-10-06T17:00:43Z | 2019-10-06T17:00:43Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Enable "explain" and "explain query plan" for CTEs 503128914 | ||
538804815 | https://github.com/dogsheep/twitter-to-sqlite/issues/13#issuecomment-538804815 | https://api.github.com/repos/dogsheep/twitter-to-sqlite/issues/13 | MDEyOklzc3VlQ29tbWVudDUzODgwNDgxNQ== | simonw 9599 | 2019-10-07T00:33:49Z | 2019-10-07T00:33:49Z | MEMBER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
statuses-lookup command 503085013 | ||
538809457 | https://github.com/simonw/datasette/issues/584#issuecomment-538809457 | https://api.github.com/repos/simonw/datasette/issues/584 | MDEyOklzc3VlQ29tbWVudDUzODgwOTQ1Nw== | simonw 9599 | 2019-10-07T01:18:02Z | 2019-10-07T01:18:02Z | OWNER | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Codec error in some CSV exports 503190241 | ||
538810470 | https://github.com/simonw/datasette/issues/562#issuecomment-538810470 | https://api.github.com/repos/simonw/datasette/issues/562 | MDEyOklzc3VlQ29tbWVudDUzODgxMDQ3MA== | simonw 9599 | 2019-10-07T01:26:01Z | 2019-10-07T01:26:25Z | OWNER | This is bothering me a lot more now - it shows up a lot with https://github.com/dogsheep databases. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Facet by array shouldn't suggest for arrays that are not arrays-of-strings 470542938 | |
538829738 | https://github.com/simonw/datasette/issues/586#issuecomment-538829738 | https://api.github.com/repos/simonw/datasette/issues/586 | MDEyOklzc3VlQ29tbWVudDUzODgyOTczOA== | simonw 9599 | 2019-10-07T03:49:30Z | 2019-10-07T03:49:30Z | OWNER | Yes this is the fault of datasette-auth-github: Bug filed over there: https://github.com/simonw/datasette-auth-github/issues/47 |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Enable browser caching for plugin statics with datasette-auth 503218205 | |
538847446 | https://github.com/dogsheep/pocket-to-sqlite/issues/1#issuecomment-538847446 | https://api.github.com/repos/dogsheep/pocket-to-sqlite/issues/1 | MDEyOklzc3VlQ29tbWVudDUzODg0NzQ0Ng== | simonw 9599 | 2019-10-07T05:41:17Z | 2019-10-07T05:41:17Z | MEMBER | Prototype code:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Use better pagination (and implement progress bar) 503233021 |
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