home / github

Menu
  • GraphQL API

commits

Table actions
  • GraphQL API for commits

247 rows where raw_committer = "2946d096d0cdefdc017559e6b57e87658736e843"

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: raw_author, repo, author, author_date (date), committer_date (date)

sha ▼ message author_date committer_date raw_author raw_committer repo author committer
00527e5c629d9dae56d6228891b40105ff0e34c6 Enable --cors by default in containers 2017-11-14T01:23:22Z 2017-11-14T01:23:22Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
01e0c3fa18cd0dd7970e208790ffd683a420c924 Fixed   bug   was showing for all None values in table cells, thanks to the autoescaping change introduced in 82261a638bd35c9 2017-11-16T15:29:52Z 2017-11-16T15:29:52Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
02862be04c51e8ec6e29517d3c28b030627bb179 Default to FTS5 2018-08-13T00:21:55Z 2018-08-13T00:21:55Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 sqlite-utils 140912432 simonw 9599 simonw 9599
02b1814fcfdc61b1b69b5955f2b60252ff10cde9 Redirects now preserve query string Fixes #28 2017-10-24T23:54:26Z 2017-10-24T23:54:26Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
03572ae35573c2ea802a540624ce116f540ba1ac Allow --load-extension to be set via environment variable I tesed this by first building and running a container using the new Dockerfile from #114: docker build . docker run -it -p 8001:8001 6c9ca7e29181 /bin/sh Then I ran this inside the container itself: apt update && apt-get install wget -y \ && wget http://www.gaia-gis.it/spatialite-2.3.1/test-2.3.sqlite.gz \ && gunzip test-2.3.sqlite.gz \ && mv test-2.3.sqlite test23.sqlite \ && datasette -h 0.0.0.0 test23.sqlite I visited this URL to confirm I got an error due to spatialite not being loaded: http://localhost:8001/test23-c88bc35?sql=select+ST_AsText%28Geometry%29+from+HighWays+limit+1 Then I checked that loading it with `--load-extension` worked correctly: datasette -h 0.0.0.0 test23.sqlite \ --load-extension=/usr/lib/x86_64-linux-gnu/mod_spatialite.so Then, finally, I tested it with the new environment variable option: SQLITE_EXTENSIONS=/usr/lib/x86_64-linux-gnu/mod_spatialite.so \ datasette -h 0.0.0.0 test23.sqlite Running it with an invalid environment variable option shows an error: $ SQLITE_EXTENSIONS=/usr/lib/x86_64-linux-gnu/blah.so datasette \ -h 0.0.0.0 test23.sqlite Usage: datasette -h [OPTIONS] [FILES]... Error: Invalid value for "--load-extension": Path "/usr/lib/x86_64-linux-gnu/blah.so" does not exist. Closes #112 2017-11-17T14:13:35Z 2017-11-17T14:13:35Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
03c58fb350f6b9bb941a46907da5ac6f67bf47cf Show databases in alphabetical order on index page 2017-11-10T19:04:56Z 2017-11-10T19:04:56Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
03e3f7d6486123bf3eb852ad007d9761475f138c Configured Travis CI 2018-07-28T13:48:53Z 2018-07-28T13:48:53Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 sqlite-utils 140912432 simonw 9599 simonw 9599
062303419cef9bbf72927c4ac4efdb185829c03b Hide facet button is now a ✖ - refs #255 2018-05-16T14:37:05Z 2018-05-16T15:27:24Z Simon Willison 13ae486343ea6454a93114c6f558ffea2f2c6874 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
06a826c3188af82f27bb6b4e09cc89b782d30bd6 :fire: Removes DS_Store (#81) * :fire: Removes .DS_Store Signed-off-by: Jeff Triplett <jeff.triplett@gmail.com> * :snowflake: Adds .DS_Store to gitignore Signed-off-by: Jeff Triplett <jeff.triplett@gmail.com> 2017-11-13T22:16:54Z 2017-11-13T22:16:54Z Jeff Triplett 207bb2132044fa5a4fe28a579f7588c2eee6e391 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 jefftriplett 50527 simonw 9599
084350b0f1343d988928cae63cfedbeb6205e25e Switched to gather_request=False for Sanic tests Gets rid of those ugly _, response = lines. 2017-11-17T14:53:37Z 2017-11-17T14:53:37Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
0aa28293adedc488eb9107dc52b5e9a124887fbd Fix compatibility with SQLite prior to 3.16.0 pragma_index_info() and pragma_index_list() were introduced in 3.16.0 but the version of SQLite running in Travis CI is earlier than that, hence the test failures: https://travis-ci.com/simonw/sqlite-utils/jobs/137617744 2018-08-01T15:29:53Z 2018-08-01T15:29:53Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 sqlite-utils 140912432 simonw 9599 simonw 9599
0ac8bbce2e73c0759ec48661a7b740d2c368b2a2 Default subcommand is now serve Using click-default-group: https://github.com/click-contrib/click-default-group Also removed requirements.txt in favour of setup.py 2017-11-04T23:53:50Z 2017-11-04T23:53:50Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
0b702f3679a2ffd4e3efb5c34b9fe30221172ccb Fixed weird edge-case with foreign key detection It turns out it is possible for a SQLite table to define a foreign key relationship to a table that does not actually exist We should still be able to handle these databases. 2017-11-17T16:18:26Z 2017-11-17T16:18:26Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
0b8c1b0a6da9cb8ac0d28cc90dd783de87554036 Test for sql_time_limit_ms + sqlite_functions mechanism Added a unit test for the sql_time_limit_ms option. To test this, I needed to add a custom SQLite sleep() function. I've added a simple mechanism to the Datasette class for registering custom functions. I also had to modify the sqlite_timelimit() function. It makes use of a magic value, N, which is the number of SQLite virtual machine instructions that should execute in between calls to my termination decision function. The value of N was not finely grained enough for my test to work - so I've added logic that says that if the time limit is less than 50ms, N is set to 1. This got the tests working. Refs #95 2017-11-15T02:41:03Z 2017-11-15T02:43:34Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
0d63128c40aec15a958dddf181c13e0db1c7908b Preparing v0.2, first release to PyPI 2018-07-29T00:42:41Z 2018-07-29T00:42:41Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 sqlite-utils 140912432 simonw 9599 simonw 9599
0f782dd8dfd7c53a9c20bbd2cb8734bb806d928b Additional test asserts 2018-04-16T20:22:04Z 2018-04-18T01:13:02Z Russ Garrett cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 russss 45057 simonw 9599
0fa177269767e5e55c863382333fde627d2b7074 Allow ?sql= argument against database e.g. /database-234324?sql=select * from table limit 1 2017-10-24T02:48:56Z 2017-10-24T02:48:56Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
12f7e1dc5624d14f644abead18bd90b420b6d97e Hashed URLs now have far-future cache expiry Since the URL now includes a hash of the database, we can return a Cache- Control: max-age=31536000 header for every response. The exception is our 302 redirects. These we now serve with a Link: header that tells any HTTP/2 server-push aware fronting proxies (such as Cloudfront) to push the target of the redirect. Closes #4 2017-10-24T02:36:44Z 2017-10-24T02:36:44Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
136a70d88741e2a5892c3de437064a9d14494d66 Add column name classes to <td>s, make PK bold 2018-04-17T08:29:48Z 2018-04-18T01:13:02Z Russ Garrett cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 russss 45057 simonw 9599
142a550a99f3c78349a10ed79f1b513fe704a169 Facet results now have "truncated" field To indicate if there was more than 20 distinct values. Refs #255 2018-05-15T09:50:27Z 2018-05-16T15:27:24Z Simon Willison 13ae486343ea6454a93114c6f558ffea2f2c6874 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
1592fd0419f374de201926d3ba67fbf1522eed13 Started work on cli, which also meant adding setup.py I'm using click, and click recommends using a setup.py - so I've added one of those. I also refactored code into a new datasite package. It's not quite deploying to now properly at the moment though - I seem to have messed up the path handling a bit. Also snuck in a new template for the "Row" view. Refs #40 2017-10-27T07:08:24Z 2017-10-27T07:08:24Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
186c513a61a091b9f83d788e25b08f41a84ed9a3 Support parameterized SQL and block potentially harmful queries You can now call arbitrary SQL like this: /flights?sql=select%20*%20from%20airports%20where%20country%20like%20:c&c=iceland Unescaped, those querystring params look like this: sql = select * from airports where country like :c c = iceland So SQL can be constructed with named parameters embedded in it, which will then be read from the querystring and correctly escaped. This means we can aggressively filter the SQL parameter for potentially dangerous syntax. For the moment we enforce that it starts with a SELECT statement and we ban the sequence "pragma" from it entirely. If you need to use pragma in a query, you can use the new named parameter mechanism. Fixes #39 2017-11-05T02:49:18Z 2017-11-05T02:49:18Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
19e1057ead0c4434f456bafb4812de2812d51bf5 Documentation for create_view() 2018-08-02T15:26:38Z 2018-08-02T15:26:38Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 sqlite-utils 140912432 simonw 9599 simonw 9599
1a6cfcc10f9abcc743b45437996c7264cc2a57b2 Added a .dockerignore Figured this would be useful while testing out 03572ae3557 2017-11-17T14:18:23Z 2017-11-17T14:18:23Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
1ae8ea0f03cfb9f25b1e25f3194c456c3649789c Started implementing ?name__contains=X filters So far we support __contains=, __startswith=, __endswith= and __exact= Refs #23 2017-10-25T00:06:23Z 2017-10-25T00:06:23Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
1b04662585ea1539014bfbd616a8112b650d5699 Table views now show expanded foreign key references, if possible If a table has foreign key columns, and those foreign key tables have label_columns, the TableView will now query those other tables for the corresponding values and display those values as links in the corresponding table cells. label_columns are currently detected by the inspect() function, which looks for any table that has just two columns - an ID column and one other - and sets the label_column to be that second non-ID column. 2017-11-18T03:09:32Z 2017-11-18T03:15:49Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
1bcd54a834a2f9730d21095df855f6708c85c200 Fix small doc typo - thanks @jaywgraves (#365) 2018-09-19T17:15:42Z 2018-09-19T17:15:42Z Jay Graves 6410ac01839c113476668eeff88d60a0a2c6eb7a Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 jaywgraves 418191 simonw 9599
1c57bd202fb1f82e14c47dfca63454352999732c Replaced app_factory with new Datasette class This should make it easier to add unit tests. 2017-11-10T19:05:57Z 2017-11-10T19:05:57Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
1c5977961f596dae5aaa18c8b2d7a10e9f42a543 Added glob and like lookups - refs #23 2017-10-25T01:53:01Z 2017-10-25T01:53:01Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
1cc5161089e559c8b16049b20f7a5b3a43290c21 Fix sqlite error when loading rows with no incoming FKs This fixes `ERROR: conn=<sqlite3.Connection object at 0x10bbb9f10>, sql = 'select ', params = {'id': '1'}` caused by an invalid query when loading incoming FKs. The error was ignored due to async but it still got printed to the console. 2018-04-14T12:06:00Z 2018-04-14T14:24:24Z Russ Garrett cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 russss 45057 simonw 9599
1dc94f6eaa98431da9c61e803e2b05b082f9c6e8 Facets can now be toggled off again, refs #255 2018-05-15T10:11:52Z 2018-05-16T15:27:24Z Simon Willison 13ae486343ea6454a93114c6f558ffea2f2c6874 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
1e698787a4dd6df0432021a6814c446c8b69bba2 Added --sql_time_limit_ms and --extra-options The serve command now accepts --sql_time_limit_ms for customizing the SQL time limit. The publish and package commands now accept --extra-options which can be used to specify additional options to be passed to the datasite serve command when it executes inside the rusulting Docker containers. 2017-11-13T21:58:34Z 2017-11-13T22:00:53Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
1f69269fe93e4cd42e56890126cc0dbcf719c6cb Refactored views into new views/ modules, refs #256 2018-05-13T12:44:22Z 2018-05-14T03:04:23Z Simon Willison 13ae486343ea6454a93114c6f558ffea2f2c6874 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
1fc75809a6aa17860944b4cc3a4d7175cd53b1f4 Refactored everything into a factory function I now call a factory function to construct the Sanic app: app = app_factory(files) This allows me to pass additional arguments to it, e.g. the files to serve. Also refactored my class-based views to accept jinja as an argument, e.g: app.add_route( TableView.as_view(jinja), '/<db_name:[^/]+>/<table:[^/]+?><as_json:(.jsono?)?$>' ) 2017-11-05T02:13:44Z 2017-11-05T02:13:44Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
20d41c8e8e84ab3e8bdb5cca9bd9799da09794ad publish now takes a required publisher argument - only current option is 'now' Closes #76 2017-11-13T18:40:51Z 2017-11-13T18:40:51Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
21c9c04310dffcdb8cf6fee0f74fc9e7ac1ecf19 Implemented cursor-based pagination for table view Closes #5 2017-11-10T20:41:14Z 2017-11-10T20:41:14Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
22851ed9f0541904f5c3fca7ddbd7add10a75d39 Table page now shows CREATE TABLE at bottom Closes #66 2017-11-12T21:16:59Z 2017-11-12T21:16:59Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
228bce83a37b4bee633f674b802aee13fe5b2f44 Added __version__, bumped it to 0.12 Closes #108 2017-11-16T15:20:54Z 2017-11-16T15:20:54Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
2366a016f252f2220eb777938a9da4b0de179063 Added links to .json and .jsono representations Closes #62 2017-11-11T22:40:44Z 2017-11-11T22:40:44Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
23e0fdb0f3196ffa4d8bc4944c8bc9cb0f89129b Removed unnecessary enumerate template helper I made this obsolete in d1756d773685ca4f9c5b57fb40e1aa743bc95525 Refs #189 2018-04-09T05:02:19Z 2018-04-09T05:10:22Z Simon Willison 13ae486343ea6454a93114c6f558ffea2f2c6874 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
255e2611e5c3cfdda76c9da7abdbe5af976044ac CORS headers for JSON responses Access-Control-Allow-Origin: * 2017-10-24T02:48:06Z 2017-10-24T02:48:06Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
2565d623af6222f3ed1c630f753b5f95ad749d49 ?_shape=array experimental feature 2018-05-01T17:40:33Z 2018-05-02T00:20:39Z Simon Willison 13ae486343ea6454a93114c6f558ffea2f2c6874 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
25c241fa5a0f8868e3c1bc5be4f5888caa47d864 Renamed project to immutabase 2017-11-06T02:32:13Z 2017-11-06T02:32:13Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
26370b14d862a5d2dc32b858bdf627f2a5ec3209 Handle table names with slashes in them e.g. https://datasette-wdlexdiaoz.now.sh/fivethirtyeight-75d605c/bob-ross%2Felements-by-episode.csv?CABIN=1&BUSHES=1&CLOUDS=1 2017-11-12T23:17:00Z 2017-11-12T23:17:00Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
28a52fcffb869f5e83ca2fad53738dc25eec425d Set theme jekyll-theme-architect 2018-05-24T16:56:21Z 2018-05-24T16:56:21Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
292f140a4f391f646ec0be85ec9f22dde30f9de2 Explicitly order by pk (or by rowid) Refs #5 2017-11-09T16:11:14Z 2017-11-09T16:11:14Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
29c897bb5649c35463618a32d095f72755aae8c6 Started the docs with a meaty example 2018-07-28T23:52:07Z 2018-07-28T23:52:07Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 sqlite-utils 140912432 simonw 9599 simonw 9599
29f9a29250169cdb564020109f76e0f4b52afa5d Total row count now correct even if _next= applied 2018-04-08T23:13:52Z 2018-04-09T05:10:22Z Simon Willison 13ae486343ea6454a93114c6f558ffea2f2c6874 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
2a09d3708777116daedc548078a662086552523f Allow views to be browsed as well as tables 2017-10-24T23:55:08Z 2017-10-24T23:55:08Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
2a9799bae651558a23ae5074edad7cc13ff0fbdc Implemented database summary on index page Closes #41 2017-10-27T04:05:13Z 2017-10-27T04:05:17Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
2b79f2bdeb1efa86e0756e741292d625f91cb93d path_with_added_args now preserves order in Python 3.5 2018-05-14T03:02:07Z 2018-05-14T03:04:23Z Simon Willison 13ae486343ea6454a93114c6f558ffea2f2c6874 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
2bbe9ca34a701191e3bf4e97943b7503a50ab548 Support OPTIONS requests for CORS 2017-11-13T02:11:52Z 2017-11-13T02:11:52Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
2c625e31ed018f929223918240603bf2a80e665c Fixed bug on Row page with tables containing spaces We were attempting to run this SQL: select * from "Order%20Details" where ... On this page: http://0.0.0.0:8877/northwind-40d049b/Order%20Details/10250,41 2017-10-27T07:16:18Z 2017-10-27T07:16:18Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
2f34da0ab2594d917e14fd0dd90ad07872941b8d Initial 2018-07-14T03:56:21Z 2018-07-14T03:56:21Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 sqlite-utils 140912432 simonw 9599 simonw 9599
2f81552cd29125e3916763f05949125a49c2dde8 Never suggest a facet if it only results in on option 2018-05-15T03:05:10Z 2018-05-16T15:27:24Z Simon Willison 13ae486343ea6454a93114c6f558ffea2f2c6874 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
2fe94641b0b2dc291d1fce3dad0fbf96294b3a32 Don't try to show row counts for views Also handle tables/views with spaces in their name in the URL. 2017-10-25T01:33:12Z 2017-10-25T01:33:12Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
31a5d8fa77be68d4f837f0a80a611675dce49f4b Bump aiohttp to fix compatibility with Python 3.7 Tests failed here: https://travis-ci.org/simonw/datasette/jobs/403223333 2018-07-12T17:41:20Z 2018-07-12T18:07:37Z Simon Willison 13ae486343ea6454a93114c6f558ffea2f2c6874 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
31b21f5c5e15fc3acab7fabb170c1da71dc3c98c Moved all SQLite queries to threads SQLite operations are blocking, but we're running everything in Sanic, an asyncio web framework, so blocking operations are bad - a long-running DB operation could hold up the entire server. Instead, I've moved all SQLite operations into threads. These are managed by a concurrent.futures ThreadPoolExecutor. This means I can run up to X queries in parallel, and I can continue to queue up additional incoming HTTP traffic while the threadpool is busy. Each thread is responsible for managing its own SQLite connections - one per database. These are cached in a threadlocal. Since we are working with immutable, read-only SQLite databases it should be safe to share SQLite objects across threads. On this assumption I'm using the check_same_thread=False option. Opening a database connection looks like this: conn = sqlite3.connect( 'file:filename.db?immutable=1', uri=True, check_same_thread=False, ) The following articles were helpful in figuring this out: * https://pymotw.com/3/asyncio/executors.html * https://marlinux.wordpress.com/2017/05/19/python-3-6-asyncio-sqlalchemy/ Closes #45. Refs #38. 2017-11-05T02:21:44Z 2017-11-05T02:21:44Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
3280972c891633c6015fa55bbfd094420b4f0233 Fixed tests I broke earlier Broke these tests in 21c9c04310dffcdb8cf6fee0f74fc9e7ac1ecf19 2017-11-11T16:52:17Z 2017-11-11T16:52:17Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
349e262bb1c8f225cf86a5e8542253282809a0eb Renamed ?_sql_time_limit_ms= to ?_timelimit, closes #242 2018-05-02T00:11:46Z 2018-05-02T00:20:39Z Simon Willison 13ae486343ea6454a93114c6f558ffea2f2c6874 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
34a5c0e1e8d1e7e685b0ba73803d153552033aac Documented insert_all() and upsert() and upsert_all() Also re-titled main docs page to 'Python API' 2018-08-13T00:17:14Z 2018-08-13T00:17:14Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 sqlite-utils 140912432 simonw 9599 simonw 9599
364b0fb6784f72b5c4048a3d6b697fba5ec86db7 Remove .DS_Store 2019-06-20T23:55:39Z 2019-06-20T23:56:13Z Simon Willison 13ae486343ea6454a93114c6f558ffea2f2c6874 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 sqlite-utils 140912432 simonw 9599 simonw 9599
368638555160fb9ac78f462d0f79b1394163fa30 Ran black source formatting tool against new views/ and app.py 2018-05-13T12:55:15Z 2018-05-14T03:04:23Z Simon Willison 13ae486343ea6454a93114c6f558ffea2f2c6874 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
3863a30b5d18204b4c77518f1880a1f705e929db publish command checks 'now' is installed Closes #58 2017-11-11T16:00:00Z 2017-11-11T16:00:00Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
3a56a2cd7eea5d477d5d936b01098be5cba0d98e Add metadata, if it exists, to heroku temp dir (#178) 2018-01-14T21:05:16Z 2018-01-14T21:05:16Z Tony Hirst 38fee63c62808d1ea42ad2bb2db074f9301d2840 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 psychemedia 82988 simonw 9599
3c50a3600d0975b84d98c93bb2336a790afc6aca Unit test for black-approved coding style 2018-07-28T14:29:20Z 2018-07-28T14:29:20Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 sqlite-utils 140912432 simonw 9599 simonw 9599
3cce63b59851495b6d9d38936356e21ea8fbad3a URL to allow direct database download It's just the database URL with .db on the end, e.g. /flights.db Closes #19 2017-10-25T15:19:32Z 2017-10-25T15:19:32Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
3d9baf3c2f2f745e6949973f18480092f189116c Set theme jekyll-theme-leap-day 2018-05-24T16:55:19Z 2018-05-24T16:55:19Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
3eb79e1a5fa4c164a224ae0adbe0ea16fde35758 Show total row count at top of table page 2017-10-25T01:31:43Z 2017-10-25T01:31:43Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
3ef35ca8b4369af6a8bcdd9e5cfbb5f3a7d17cf8 serve and publish commands now take a --metadata option If provided, the --metadata option is the path to a JSON file containing metadata that should be displayed alongside the dataset. datasette /tmp/fivethirtyeight.db --metadata /tmp/metadata.json Currently that metadata format looks like this: { "title": "Five Thirty Eight", "license": "CC Attribution 4.0 License", "license_url": "http://creativecommons.org/licenses/by/4.0/", "source": "fivethirtyeight/data on GitHub", "source_url": "https://github.com/fivethirtyeight/data" } If provided, this will be used by the index template and to populate the common footer. The publish command also accepts this argument, and will package any provided metadata up and include it with the resulting Docker container. datasette publish --metadata /tmp/metadata.json /tmp/fivethirtyeight.db Closes #68 2017-11-13T15:20:02Z 2017-11-13T15:20:02Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
407795b61217205625f2d4e084afbf69f1db781b Initial unit tests against our Sanic app Refs #50 I had to disable the build metadata function to get these tests to work sensibly. I need to completely rethink how that mechanism works. 2017-11-11T17:47:59Z 2017-11-11T17:47:59Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
40a563ebac72f46a1b2dc498a25520c429bca6d6 Reworked metadata building options Building metadata is now optional. If you want to do it, do this: datasette build *.db --metadata=metadata.json Then when you run the server you can tell it to read from metadata: datasette serve *.db --metadata=metadata.json The Dockerfile generated by datasette publish now uses this mechanism. Closes #60 2017-11-11T20:10:51Z 2017-11-11T20:11:51Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
40d3b3eae68286f67e40226f18f2621b26e5e533 Refactored tests into new tests/ folder Guided by https://docs.pytest.org/en/latest/goodpractices.html 2017-11-10T18:48:16Z 2017-11-10T18:48:16Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
4143e3b45c16cbae5e3e3419ef479a71810e7df3 New command: datasette package - packages a docker container Example usage: datasette package fivethirtyeight.db \ --tag fivethirtyeight \ --metadata=538-metadata.json This will create a temporary directory, generate a Dockerfile, copy in the SQLite database and metadata file, then build that as a new docker image and tag that in your local Docker repository as fivethirtyeight:latest. You can then run the image like so: docker run -p 8006:8001 fivethirtyeight This will expose port 8001 in the container (the default) as port 8006 on your host. Closes #67 2017-11-13T16:13:38Z 2017-11-13T16:17:35Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
4427d2d96f7197e25acee85643bcf02e758b8b1e table.create_index(columns, index_name) method 2018-08-01T15:20:44Z 2018-08-01T15:20:44Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 sqlite-utils 140912432 simonw 9599 simonw 9599
446d47fdb005b3776bc06ad8d1f44b01fc2e938b make html title more readable in query template (#180) tiny tweak to make this easier to visually parse—I think it matches your style in other templates 2018-04-03T15:24:04Z 2018-04-03T15:24:04Z Ryan Pitts daa0836007170071f748b575d34c4432f4f43926 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 ryanpitts 56477 simonw 9599
44a199a0625b695492b2a8605030dc61191f39cb Stop using sqlite WITH RECURSIVE in our tests The version of Python 3 running in Travis CI doesn't support this. 2017-11-13T22:15:21Z 2017-11-13T22:15:21Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
4586aa506a054d07e674cde8143a3008e6bc5d78 Don't duplicate simple primary keys in the link column When there's a simple (single-column) primary key, it looks weird to duplicate it in the link column. This change removes the second PK column and treats the link column as if it were the PK column from a header/sorting perspective. 2018-04-15T21:49:01Z 2018-04-18T01:13:02Z Russ Garrett cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 russss 45057 simonw 9599
45e502aace6cc1198cc5f9a04d61b4a1860a012b Added unit tests for inspect() foreign key detection Used them to fix a bug with it. Refs #85 2017-11-17T16:08:11Z 2017-11-17T16:08:11Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
46281c9db0d6eb50203880c83363a8b279db4ecd Release 1.2.1 2019-06-21T00:01:21Z 2019-06-21T00:01:24Z Simon Willison 13ae486343ea6454a93114c6f558ffea2f2c6874 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 sqlite-utils 140912432 simonw 9599 simonw 9599
495407acefe1e6976316aef88ae0e4c1d48ab421 Force initial .inspect() before starting server Otherwise there is a long pause on the first request made. 2017-11-13T18:03:52Z 2017-11-13T18:03:52Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
49f317752cfe89c5641165a490eef49e025752a7 Move version info back to separate module 2018-05-22T17:33:57Z 2018-05-22T19:35:21Z Robert Gieseke 106fe7fbf8b80a01038e265a137b3b703422db48 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 rgieseke 198537 simonw 9599
4c66097d581c3970a23530598c4fe98b09f422ee datasette publish now works with full paths e.g. datasette publish /tmp/blah/database.db now does the right thing 2017-11-12T23:16:24Z 2017-11-12T23:16:24Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
4c7379a898df426af0c31159e5cb06d672189301 Don't crash on weird character encodings Expecting SQLite columns to all be valid utf8 doesn't work, because we are deailing with all kinds of databases. Instead, we now use the 'replace' encoding mode to replace any non-UTF8 characters with a [X] character. 2017-10-25T00:01:34Z 2017-10-25T00:01:34Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
4f7281af8ce421d2f8c57ba43108261ba89d2cd6 Apply a default height to CodeMirror Makes it a bit more obvious that it's an editable textarea even if the SQL in it is only one line long. 2017-11-15T02:04:04Z 2017-11-15T02:04:04Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
4fec50597a8684756bc96d4a69b6fab809ec6cf6 Include license/source in JSON output if provided 2017-11-13T18:39:25Z 2017-11-13T18:39:25Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
501618d0d519f808e54210f3c54420e5559a9343 Ensure black is correctly installed for tests 2018-07-28T14:36:43Z 2018-07-28T14:36:43Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 sqlite-utils 140912432 simonw 9599 simonw 9599
50e817801f90d07468ea394ef562d55d8940d124 Fixed #83 Turns out we had a redirect bug as well. 2017-11-14T00:44:08Z 2017-11-14T00:44:43Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
514873c6295dcd467d806064a549e46b4ea3279a Fix bug with toggle_url on integer facets 2018-05-15T10:19:09Z 2018-05-16T15:27:24Z Simon Willison 13ae486343ea6454a93114c6f558ffea2f2c6874 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
515d362ad60c3dc16272c4fdca932cf0a0e9dafa .table_names and .tables properties plus expanded docs 2018-08-01T00:35:36Z 2018-08-01T00:35:36Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 sqlite-utils 140912432 simonw 9599 simonw 9599
51bdd67691bd69082ae7690af8b905f06050ee80 Changelog for 0.12 release 2017-11-16T15:37:46Z 2017-11-16T15:37:46Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
566f2d31d6f4950200b64424f6f9cfdd06343f4e Clarified relationship between metadata and _facet= facets, updated docs - refs @255 2018-05-16T15:15:23Z 2018-05-16T15:27:24Z Simon Willison 13ae486343ea6454a93114c6f558ffea2f2c6874 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
56e29158fe5174a5b06d0a58090da7fb4624ed60 Don't run black test on Python 3.7 It breaks on that version - see https://github.com/ambv/black/issues/425 But that's OK, we only need it to run onder one version anyway. 2018-07-28T18:18:40Z 2018-07-28T18:18:40Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 sqlite-utils 140912432 simonw 9599 simonw 9599
58b5a37dbbf13868a46bcbb284509434e66eca25 Refactor inspect logic 2018-05-21T08:02:34Z 2018-05-22T14:03:06Z Russ Garrett cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 russss 45057 simonw 9599
58fec99ab0a31bcf25968f2aa05d37de8139b83c Allow app names for `datasette publish heroku` Lets you supply the `-n` parameter for Heroku deploys, which also lets you update existing Heroku deployments. 2018-07-14T13:10:49Z 2018-07-14T14:04:42Z Russ Garrett cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 russss 45057 simonw 9599
5928c11ee798a232aa4096706cd47e639d1c9fc2 Version 0.10 2017-11-14T00:45:23Z 2017-11-14T00:45:23Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
594b25ef9f633dabdaca98b46dea9fbb82628166 Started a changelog, releasing 0.6 2018-08-13T00:46:22Z 2018-08-13T00:46:22Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 sqlite-utils 140912432 simonw 9599 simonw 9599
59580d02da80eb963d5bce897c539c6489042025 Implemented custom SQL via textarea Closes #65 2017-11-12T02:35:35Z 2017-11-12T02:35:35Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
59a616ca5c99301a254d86ab097b6ce8f7b30fb6 Move view SQL to bottom of the page Now consistent with tables 2017-11-12T21:25:34Z 2017-11-12T21:25:34Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599
5d8084a28578da2aefa79ad81df9d82e2c265666 Added a UI for editing named parameters Fixes #96 2017-11-16T01:32:48Z 2017-11-16T01:32:48Z Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 Simon Willison 2946d096d0cdefdc017559e6b57e87658736e843 datasette 107914493 simonw 9599 simonw 9599

Next page

Advanced export

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

CSV options:

CREATE TABLE [commits] (
   [sha] TEXT PRIMARY KEY,
   [message] TEXT,
   [author_date] TEXT,
   [committer_date] TEXT,
   [raw_author] TEXT REFERENCES [raw_authors]([id]),
   [raw_committer] TEXT REFERENCES [raw_authors]([id]),
   [repo] INTEGER REFERENCES [repos]([id]),
   [author] INTEGER REFERENCES [users]([id]),
   [committer] INTEGER REFERENCES [users]([id])
);
CREATE INDEX [idx_commits_committer]
                ON [commits] ([committer]);
CREATE INDEX [idx_commits_author]
                ON [commits] ([author]);
CREATE INDEX [idx_commits_repo]
                ON [commits] ([repo]);
CREATE INDEX [idx_commits_raw_committer]
                ON [commits] ([raw_committer]);
CREATE INDEX [idx_commits_raw_author]
                ON [commits] ([raw_author]);
Powered by Datasette · Queries took 25.081ms · About: simonw/datasette-graphql