kopia lustrzana https://github.com/simonw/datasette
				
				
				
			
							rodzic
							
								
									de04d7a854
								
							
						
					
					
						commit
						f571b19d8a
					
				
							
								
								
									
										17
									
								
								app.py
								
								
								
								
							
							
						
						
									
										17
									
								
								app.py
								
								
								
								
							| 
						 | 
				
			
			@ -2,6 +2,7 @@ from sanic import Sanic
 | 
			
		|||
from sanic import response
 | 
			
		||||
from sanic_jinja2 import SanicJinja2
 | 
			
		||||
import sqlite3
 | 
			
		||||
from functools import wraps
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
app = Sanic(__name__)
 | 
			
		||||
| 
						 | 
				
			
			@ -12,7 +13,21 @@ conn = sqlite3.connect('file:northwind.db?immutable=1', uri=True)
 | 
			
		|||
conn.row_factory = sqlite3.Row
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def sqlerrors(fn):
 | 
			
		||||
    @wraps(fn)
 | 
			
		||||
    async def inner(*args, **kwargs):
 | 
			
		||||
        try:
 | 
			
		||||
            return await fn(*args, **kwargs)
 | 
			
		||||
        except sqlite3.OperationalError as e:
 | 
			
		||||
            return response.json({
 | 
			
		||||
                'ok': False,
 | 
			
		||||
                'error': str(e),
 | 
			
		||||
            })
 | 
			
		||||
    return inner
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@app.route('/')
 | 
			
		||||
@sqlerrors
 | 
			
		||||
async def index(request, sql=None):
 | 
			
		||||
    sql = sql or request.args.get('sql', '')
 | 
			
		||||
    if not sql:
 | 
			
		||||
| 
						 | 
				
			
			@ -26,6 +41,7 @@ async def index(request, sql=None):
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
@app.route('/<table:[a-zA-Z0-9].*>.json')
 | 
			
		||||
@sqlerrors
 | 
			
		||||
async def table_json(request, table):
 | 
			
		||||
    sql = 'select * from {} limit 20'.format(table)
 | 
			
		||||
    return response.json([
 | 
			
		||||
| 
						 | 
				
			
			@ -34,6 +50,7 @@ async def table_json(request, table):
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
@app.route('/<table:[a-zA-Z0-9].*>')
 | 
			
		||||
@sqlerrors
 | 
			
		||||
async def table(request, table):
 | 
			
		||||
    sql = 'select * from {} limit 20'.format(table)
 | 
			
		||||
    return await index(request, sql)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue