mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
parent
fd3a33989a
commit
59580d02da
4 changed files with 92 additions and 1 deletions
|
|
@ -243,6 +243,8 @@ class DatabaseView(BaseView):
|
|||
template = 'database.html'
|
||||
|
||||
async def data(self, request, name, hash):
|
||||
if request.args.get('sql'):
|
||||
return await self.custom_sql(request, name, hash)
|
||||
tables = []
|
||||
table_metadata = self.ds.metadata()[name]['tables']
|
||||
for table_name, table_rows in table_metadata.items():
|
||||
|
|
@ -265,6 +267,25 @@ class DatabaseView(BaseView):
|
|||
'database_hash': hash,
|
||||
}
|
||||
|
||||
async def custom_sql(self, request, name, hash):
|
||||
params = request.raw_args
|
||||
sql = params.pop('sql')
|
||||
validate_sql_select(sql)
|
||||
rows = await self.execute(name, sql, params)
|
||||
columns = [r[0] for r in rows.description]
|
||||
return {
|
||||
'database': name,
|
||||
'rows': rows,
|
||||
'columns': columns,
|
||||
'query': {
|
||||
'sql': sql,
|
||||
'params': params,
|
||||
}
|
||||
}, {
|
||||
'database_hash': hash,
|
||||
'custom_sql': True,
|
||||
}
|
||||
|
||||
|
||||
class DatabaseDownload(BaseView):
|
||||
async def view_get(self, request, name, hash, **kwargs):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue