mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
Initial working proof of concept
This commit is contained in:
parent
ac9d66817d
commit
de04d7a854
5 changed files with 74 additions and 0 deletions
43
app.py
Normal file
43
app.py
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
from sanic import Sanic
|
||||
from sanic import response
|
||||
from sanic_jinja2 import SanicJinja2
|
||||
import sqlite3
|
||||
import json
|
||||
|
||||
app = Sanic(__name__)
|
||||
jinja = SanicJinja2(app)
|
||||
|
||||
#conn = sqlite3.connect('file:flights.db?immutable=1', uri=True)
|
||||
conn = sqlite3.connect('file:northwind.db?immutable=1', uri=True)
|
||||
conn.row_factory = sqlite3.Row
|
||||
|
||||
|
||||
@app.route('/')
|
||||
async def index(request, sql=None):
|
||||
sql = sql or request.args.get('sql', '')
|
||||
if not sql:
|
||||
sql = 'select * from sqlite_master'
|
||||
rows = conn.execute(sql)
|
||||
headers = [r[0] for r in rows.description]
|
||||
return jinja.render('index.html', request,
|
||||
headers=headers,
|
||||
rows=list(rows),
|
||||
)
|
||||
|
||||
|
||||
@app.route('/<table:[a-zA-Z0-9].*>.json')
|
||||
async def table_json(request, table):
|
||||
sql = 'select * from {} limit 20'.format(table)
|
||||
return response.json([
|
||||
dict(r) for r in conn.execute(sql)
|
||||
])
|
||||
|
||||
|
||||
@app.route('/<table:[a-zA-Z0-9].*>')
|
||||
async def table(request, table):
|
||||
sql = 'select * from {} limit 20'.format(table)
|
||||
return await index(request, sql)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host="0.0.0.0", port=8006)
|
||||
Loading…
Add table
Add a link
Reference in a new issue