html_url,issue_url,id,node_id,user,user_label,created_at,updated_at,author_association,body,reactions,issue,issue_label,performed_via_github_app https://github.com/simonw/datasette/issues/39#issuecomment-339510770,https://api.github.com/repos/simonw/datasette/issues/39,339510770,MDEyOklzc3VlQ29tbWVudDMzOTUxMDc3MA==,9599,simonw,2017-10-26T00:07:40Z,2017-10-26T00:07:40Z,OWNER,It looks like I should double quote my columns and ensure they are correctly escaped https://blog.christosoft.de/2012/10/sqlite-escaping-table-acolumn-names/ - hopefully using ? placeholders for column names will work. I should use ? for tables too.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",268469569,Protect against malicious SQL that causes damage even though our DB is immutable, https://github.com/simonw/datasette/issues/40#issuecomment-339514819,https://api.github.com/repos/simonw/datasette/issues/40,339514819,MDEyOklzc3VlQ29tbWVudDMzOTUxNDgxOQ==,9599,simonw,2017-10-26T00:35:46Z,2017-10-26T00:35:46Z,OWNER,"I’m going to have a single command-line app that does everything. Name to be decided - options include dataset, stateless, datasite (I quite like that - it reflects SQLite and the fact that you create a website)","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",268470572,Implement command-line tool interface, https://github.com/simonw/datasette/issues/40#issuecomment-339515822,https://api.github.com/repos/simonw/datasette/issues/40,339515822,MDEyOklzc3VlQ29tbWVudDMzOTUxNTgyMg==,9599,simonw,2017-10-26T00:43:34Z,2017-10-26T00:43:34Z,OWNER,"datasite . - starts web app in current directory, serving all DB files datasite . -p 8001 - serves on custom port datasite blah.db blah2.db - serves specified files You can’t specify more than one directory. You can specify as many files as you like. If you specify two files with different oaths but the same name then they must be accessed by hash. datasite publish . - publishes current directory to the internet! Uses now by default, if it detects it on your path. Other publishers will be eventually added as plugins. datasite publish http://path-to-db.db - publishes a DB available at a URL. Works by constructing the Dockerfile with wget calls in it. datasite blah.db -m metadata.json If you specify a directory it looks for metadata.json in that directory. Otherwise you can pass an explicit metadata file oath with -m or —metadata","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",268470572,Implement command-line tool interface, https://github.com/simonw/datasette/issues/40#issuecomment-339516032,https://api.github.com/repos/simonw/datasette/issues/40,339516032,MDEyOklzc3VlQ29tbWVudDMzOTUxNjAzMg==,9599,simonw,2017-10-26T00:44:52Z,2017-10-26T00:44:52Z,OWNER,Another potential name: datapi ,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",268470572,Implement command-line tool interface, https://github.com/simonw/datasette/issues/40#issuecomment-339517846,https://api.github.com/repos/simonw/datasette/issues/40,339517846,MDEyOklzc3VlQ29tbWVudDMzOTUxNzg0Ng==,9599,simonw,2017-10-26T00:58:39Z,2017-10-26T00:58:39Z,OWNER,"I’m going to use Click for this http://nvie.com/posts/writing-a-cli-in-python-in-under-60-seconds/ https://kushaldas.in/posts/building-command-line-tools-in-python-with-click.html","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",268470572,Implement command-line tool interface, https://github.com/simonw/datasette/issues/40#issuecomment-339724700,https://api.github.com/repos/simonw/datasette/issues/40,339724700,MDEyOklzc3VlQ29tbWVudDMzOTcyNDcwMA==,9599,simonw,2017-10-26T16:35:20Z,2017-10-26T16:35:20Z,OWNER,"Here’s how to make the “serve” subcommand the default if it is called with no arguments: @click.group(invoke_without_command=True) def serve(): # ...","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",268470572,Implement command-line tool interface,