Consulta SQL para Discourse Data Explorer

Tengo una pregunta muy similar a (pero diferente de) la pregunta publicada aquí: `DataExplorer::ValidationError: Missing parameter` when running Data Explorer queries with [params] via API.

Mi consulta en Data Explorer se ve así:

-- [params]
-- topic_id :topic_id

SELECT * FROM posts WHERE topic_id = :topic_id

Esto funciona bien en Data Explorer. Luego, cuando intento ejecutarlo a través de la API, obtengo:

{"success":false,"errors":["DiscourseDataExplorer::ValidationError: Missing parameter topic_id of type topic_id"]}

Aquí está mi solicitud de Python:


headers = {
    'Content-Type': 'multipart/form-data;',
    'Api-Key': API_KEY,
    'Api-Username': USERNAME_SYSTEM
}

params = {"topic_id": 398}

response = requests.post(url="[REDACTED]/admin/plugins/explorer/queries/10/run", headers=headers, params=params)

Entiendo por el error que no puedo pasar “topic_id” como una cadena, pero no veo de qué otra manera puedo pasarlo como una clave. ¿Alguna idea sobre esto?

1 me gusta

Los parámetros no se pasan en la URL.

¿Quizás algo como: data={“params”: ‘{“topic_id”:\"398\"}’}?

Tuve que probar muchas alternativas diferentes, pero esto funcionó:

                         headers=headers, data={'params': '{\\\"topic_id\\\": \"398\"}'})```

Así que la respuesta es una combinación de esa publicación anterior (que decía que tienes que escapar las comillas cuando envías desde una máquina con Windows y la publicación de Arkshine que dice que debe pasarse como datos y no como un argumento `params`. Lo que me parece extraño, sin embargo, es que pensé que el propósito del argumento `params` en el módulo `requests` de Python era pasar información de parámetros.
1 me gusta

¡Me alegra que funcionara!

Intenté enviar Linux (wsl) o Windows; no tengo el mismo problema y funcionó para ambos. :thinking:

data = {
    'params': '{\"topic_id\": \"3\"}'
}

response = requests.post(
    url="http://localhost:4200/admin/plugins/explorer/queries/4/run",
    headers=headers,
    data=data
)

image

1 me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.