New way of deriving named parameters using explain, refs #1421

This commit is contained in:
Simon Willison 2021-08-08 20:21:13 -07:00
commit fc4846850f
4 changed files with 31 additions and 2 deletions

View file

@ -159,7 +159,6 @@ class BaseView:
class DataView(BaseView):
name = ""
re_named_parameter = re.compile(":([a-zA-Z0-9_]+)")
async def options(self, request, *args, **kwargs):
r = Response.text("ok")

View file

@ -10,6 +10,7 @@ import markupsafe
from datasette.utils import (
await_me_maybe,
check_visibility,
derive_named_parameters,
to_css_class,
validate_sql_select,
is_url,
@ -223,7 +224,9 @@ class QueryView(DataView):
await self.check_permission(request, "execute-sql", database)
# Extract any :named parameters
named_parameters = named_parameters or self.re_named_parameter.findall(sql)
named_parameters = named_parameters or await derive_named_parameters(
self.ds.get_database(database), sql
)
named_parameter_values = {
named_parameter: params.get(named_parameter) or ""
for named_parameter in named_parameters