kopia lustrzana https://github.com/simonw/datasette
Documentation for derive_named_parameters()
Closes #2284 Refs https://github.com/simonw/datasette-write/issues/7#issuecomment-1967593883pull/2288/head
rodzic
dfd4ad558b
commit
c863443ea1
|
@ -18,12 +18,14 @@ import time
|
||||||
import types
|
import types
|
||||||
import secrets
|
import secrets
|
||||||
import shutil
|
import shutil
|
||||||
from typing import Iterable, Tuple
|
from typing import Iterable, List, Tuple
|
||||||
import urllib
|
import urllib
|
||||||
import yaml
|
import yaml
|
||||||
from .shutil_backport import copytree
|
from .shutil_backport import copytree
|
||||||
from .sqlite import sqlite3, supports_table_xinfo
|
from .sqlite import sqlite3, supports_table_xinfo
|
||||||
|
|
||||||
|
if typing.TYPE_CHECKING:
|
||||||
|
from datasette.database import Database
|
||||||
|
|
||||||
# From https://www.sqlite.org/lang_keywords.html
|
# From https://www.sqlite.org/lang_keywords.html
|
||||||
reserved_words = set(
|
reserved_words = set(
|
||||||
|
@ -1130,7 +1132,13 @@ class StartupError(Exception):
|
||||||
_re_named_parameter = re.compile(":([a-zA-Z0-9_]+)")
|
_re_named_parameter = re.compile(":([a-zA-Z0-9_]+)")
|
||||||
|
|
||||||
|
|
||||||
async def derive_named_parameters(db, sql):
|
@documented
|
||||||
|
async def derive_named_parameters(db: "Database", sql: str) -> List[str]:
|
||||||
|
"""
|
||||||
|
Given a SQL statement, return a list of named parameters that are used in the statement
|
||||||
|
|
||||||
|
e.g. for ``select * from foo where id=:id`` this would return ``["id"]``
|
||||||
|
"""
|
||||||
explain = "explain {}".format(sql.strip().rstrip(";"))
|
explain = "explain {}".format(sql.strip().rstrip(";"))
|
||||||
possible_params = _re_named_parameter.findall(sql)
|
possible_params = _re_named_parameter.findall(sql)
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -1256,6 +1256,15 @@ Utility function for calling ``await`` on a return value if it is awaitable, oth
|
||||||
|
|
||||||
.. autofunction:: datasette.utils.await_me_maybe
|
.. autofunction:: datasette.utils.await_me_maybe
|
||||||
|
|
||||||
|
.. _internals_utils_derive_named_parameters:
|
||||||
|
|
||||||
|
derive_named_parameters(db, sql)
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
Derive the list of named parameters referenced in a SQL query, using an ``explain`` query executed against the provided database.
|
||||||
|
|
||||||
|
.. autofunction:: datasette.utils.derive_named_parameters
|
||||||
|
|
||||||
.. _internals_tilde_encoding:
|
.. _internals_tilde_encoding:
|
||||||
|
|
||||||
Tilde encoding
|
Tilde encoding
|
||||||
|
|
Ładowanie…
Reference in New Issue