[{"data":1,"prerenderedAt":248},["ShallowReactive",2],{"project-16170892":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":15,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":26,"sentiment":27,"stance_mix":28,"scored_comments":33,"aspects":34,"strip":38,"post_text":40,"what":41,"said":85,"maker_in_thread":148,"shape":156,"grid":159,"attempts":209,"same_week":210,"maker_shows":239,"maker_hidden":240,"reader_version":241,"card":242},"16170892","Datasette Publish","Turn CSVs into a SQLite-Backed JSON API","title","Show HN: Datasette Publish – Turn CSVs into a SQLite-Backed JSON API","https:\u002F\u002Fpublish.datasettes.com\u002F","publish.datasettes.com","simonw",1516217003,2018,101,21,432,2155,"notable","data","data publishing","web_app",[23,24,25,20],"csv to api","sqlite","json api","mixed",0.286,{"positive":29,"neutral":30,"mixed":31,"critical":32},5,4,0,1,10,{"idea":35,"performance":37},{"positive":36,"critical":32},2,{"positive":36,"critical":31},[31,31,31,31,29,31,29,39,31,32,29,31,29,31,39,39,31,29,31,39,31],3,null,{"problem":42,"audience":52,"pricing":56,"motivation":60,"time_to_build":40,"stack":64,"openness":82,"stage":83,"team_size":84},{"value":43,"source":44,"evidence":45},"Publishing static datasets as a queryable web UI and JSON API without running servers","maker",[46,49],{"id":47,"by":11,"text":48},"16172893","Datasette is specifically designed for publishing static data - it doesn't handle UPDATE\u002FINSERT traffic at all. This is a good fit for any time you want to share some static data…",{"id":50,"by":11,"text":51},"16172344","That's exactly what Datasette Publish solves: it's a tool which you upload CSVs to and it deploys the application on the internet for you, for free. Under the hood it's taking…",{"value":53,"source":44,"evidence":54},"Data journalists, government open data publishers, cultural institutions",[55],{"id":47,"by":11,"text":48},{"value":57,"source":44,"evidence":58},"Free hosting via Zeit free tier",[59],{"id":50,"by":11,"text":51},{"value":61,"source":44,"evidence":62},"Make it easy to publish static data as an API for journalism, government and cultural data",[63],{"id":47,"by":11,"text":48},[65,71,75],{"value":66,"source":44,"evidence":67},"Python 3",[68],{"id":69,"by":11,"text":70},"16172867","Nope, it's much more simple than that. Each CSV upload is converted into a SQLite database. Then I deploy a static, read-only copy of that database to a Zeit Now hosting account…",{"value":72,"source":44,"evidence":73},"SQLite",[74],{"id":69,"by":11,"text":70},{"value":76,"source":44,"evidence":77},"Zeit Now",[78,81],{"id":79,"by":11,"text":80},"16170900","Way more information plus an animated screenshot showing how to use it on my blog: https:\u002F\u002Fsimonwillison.net\u002F2018\u002FJan\u002F17\u002Fdatasette-publish\u002F This is built using the brand new Zeit…",{"id":69,"by":11,"text":70},"open_source","launched","unknown",{"praise":86,"objections":105,"requests":120,"questions":128,"alternatives":133},[87,98],{"value":88,"source":89,"evidence":90},"Handles large datasets well via read-only SQLite","commenter",[91,95],{"id":92,"by":93,"text":94},"16176342","lozzo","this was a key answer to a good question. I think you should emphasize that part (handling large data sets) as a key aspect of datasette",{"id":96,"by":11,"text":97},"16174339","Size. The San Francisco trees database is around 50MB, and I've successfully tested it with multiple GB sized SQLite databases.",{"value":99,"source":89,"evidence":100},"Useful for charting and dynamic web data",[101],{"id":102,"by":103,"text":104},"16178360","dgudkov","This can be a good solution to use with JS charting libraries that pull CSV\u002FJSON data from an external data source. Add dynamic chart updates on source data updates and you get…",[106,113],{"value":107,"source":89,"evidence":108},"Static JSON blob on a CDN could work without an API",[109],{"id":110,"by":111,"text":112},"16173530","toomuchtodo","Why not convert the data from csv to json and serve the json blob from your object store or CDN (if this solution is immutable)? No need for the API interface, just gzip the json…",{"value":114,"source":89,"evidence":115},"Unclear use cases for convert-to-JSON-API tools",[116],{"id":117,"by":118,"text":119},"16172861","pwaai","been seeing a lot of these convert X into JSON api with query ...but what would be the use cases for this type of tool? who needs this type of solution?",[121],{"value":122,"source":89,"evidence":123},"Support adding new CSVs later and deduplication",[124],{"id":125,"by":126,"text":127},"16182589","brandonlipman","This is awesome. Could this be extended so that new CSV uploads can be added at a later date and deduplicate?",[129],{"value":130,"source":89,"evidence":131},"Who needs this and for what use cases",[132],{"id":117,"by":118,"text":119},[134,141],{"value":135,"source":89,"evidence":136},"data.world SQL support",[137],{"id":138,"by":139,"text":140},"16172952","dmeeker","Related option for those who are less focused on the JSON API and instead want to make their datasets public and queryable: data.world added SQL support a little while back,…",{"value":142,"source":89,"evidence":143},"xmysql for MySQL databases",[144],{"id":145,"by":146,"text":147},"16176159","o1lab","Xmysql: One command to generate api for any MySql database. Generates api at blink of an eye (literally). https:\u002F\u002Fgithub.com\u002Fo1lab\u002Fxmysql Has some really nice apis for group by,…",{"comments":149,"answered":30,"key":150},7,[151,152,155],{"id":79,"text":80},{"id":153,"text":154},"16172451","Ryan Pitts on Twitter used this to build an API for UFO sightings in Washington state and the North West: https:\u002F\u002Ftwitter.com\u002Fryanpitts\u002Fstatus\u002F953728651945627648 Here's his…",{"id":47,"text":48},{"commenters":157,"max_depth":29,"maker_replies":149,"first_comment_mins":32,"lifespan_hours":158},15,129,[160,162,164,166,168,169,172,176,179,180,182,186,187,188,191,194,198,200,201,203,207],[79,31,31,161,11,32],"project\u002Fpositive\u002Fdocs",[145,31,31,163,146,31],"other\u002Fneutral\u002Fnone",[153,32,31,165,11,32],"project\u002Fpositive\u002Fidea",[138,36,31,167,139,31],"other\u002Fneutral\u002Fidea",[102,39,29,165,103,31],[170,30,31,163,171,31],"16172759","edraferi",[173,29,29,174,175,31],"16210977","project\u002Fpositive\u002Fnone","elephant_burger",[117,177,39,178,118,31],6,"project\u002Fneutral\u002Fidea",[47,177,31,165,11,32],[110,177,32,181,111,31],"project\u002Fcritical\u002Fidea",[183,177,29,184,185,31],"16173660","project\u002Fpositive\u002Fperformance","bdcravens",[96,177,31,184,11,32],[92,177,29,184,93,31],[189,177,31,167,190,31],"16173746","chrsstrm",[192,149,39,178,193,31],"16172806","WaxProlix",[195,149,39,196,197,31],"16172853","project\u002Fneutral\u002Fnone","dboreham",[69,149,31,199,11,32],"project\u002Fneutral\u002Fexecution",[125,149,29,165,126,31],[202,149,31,199,11,32],"16183849",[204,205,39,178,206,31],"16172176",8,"m3kw9",[50,205,31,208,11,32],"project\u002Fpositive\u002Fpricing",[],[211,216,221,226,230,234],{"id":212,"name":213,"points":214,"category":215},"16132502","Bato",159,"languages",{"id":217,"name":218,"points":219,"category":220},"16144746","Languagecrunch",152,"ai",{"id":222,"name":223,"points":224,"category":225},"16166973","Genact",131,"creative",{"id":227,"name":228,"points":229,"category":215},"16138990","SwiftPascalInterpreter",103,{"id":231,"name":232,"points":233,"category":19},"16161673","Bistro",95,{"id":235,"name":236,"points":237,"category":238},"16156723","HardyPress",86,"web_saas",12,false,"v2",{"id":243,"name":5,"line":6,"ai":240,"cat":19,"year":13,"points":14,"comments":15,"rec":26,"s":244,"top":15,"kw":245,"maker":11,"domain":10,"tier":18,"attempts":31,"strip":246,"url":9,"mix":247,"praise":88,"objection":107,"sub":20},16170892,0.29,[23,24,25,20],"000050530150503305030",[29,30,31,32],1794036562631]