Requête SQL pour Discourse Data Explorer

J’ai une question très similaire à (mais différente de) la question publiée ici : `DataExplorer::ValidationError: Missing parameter` when running Data Explorer queries with [params] via API.

Ma requête dans Data Explorer ressemble à ceci :

-- [params]
-- topic_id :topic_id

SELECT * FROM posts WHERE topic_id = :topic_id

Cela fonctionne bien dans Data Explorer. Ensuite, lorsque j’essaie de l’exécuter via l’API, j’obtiens :

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

Voici ma requête 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)

Je déduis de l’erreur que je ne peux pas passer « topic_id » comme une chaîne de caractères, mais je ne vois pas comment d’autre je peux le passer comme une clé. Des idées à ce sujet ?

1 « J'aime »

Les paramètres ne sont pas transmis dans l’URL.

Peut-être quelque chose comme : data={“params”: ‘{“topic_id”:\"398\"}’} ?

J’ai dû essayer beaucoup d’alternatives différentes, mais celle-ci a fonctionné :

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

Donc, la réponse est une combinaison de ce post précédent (qui disait qu'il fallait échapper les guillemets lors de l'envoi depuis une machine Windows et du post d'Arkshine qui dit qu'il faut le passer en tant que `data` et non en tant qu'argument `params`. Ce que je trouve étrange cependant, c'est que je pensais que le but de l'argument `params` dans le module `requests` de Python était de passer des informations de paramètre.
1 « J'aime »

Je suis content que ça ait marché !

J’ai essayé d’envoyer Linux (wsl) ou Windows ; je n’ai pas le même problème, et ça a fonctionné pour les deux. :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 « J'aime »

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