Query SQL per Discourse Data Explorer

Ho una domanda molto simile a (ma diversa da) la domanda pubblicata qui: `DataExplorer::ValidationError: Missing parameter` when running Data Explorer queries with [params] via API.

La mia query in Data Explorer è la seguente:

-- [params]
-- topic_id :topic_id

SELECT * FROM posts WHERE topic_id = :topic_id

Questo funziona bene in Data Explorer. Poi, quando provo a eseguirla tramite l’API ottengo:

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

Ecco la mia richiesta 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)

Dall’errore deduco che non posso passare “topic_id” come stringa, ma non vedo in che altro modo posso passarlo come chiave. Qualche idea a riguardo?

1 Mi Piace

I parametri non vengono passati nell’URL.

Forse qualcosa come: data={“params”: ‘{“topic_id”:\"398\"}’}?

Ho dovuto provare molte alternative diverse, ma questa ha funzionato:

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

Quindi, la risposta è una combinazione di quel post precedente (che diceva che devi fare l'escape delle virgolette quando invii da una macchina Windows e del post di Arkshine che dice che deve essere passato come dati e non come argomento params. Quello che trovo strano, però, è che pensavo che l'intero scopo dell'argomento params nel modulo requests di Python fosse passare informazioni sui parametri.
1 Mi Piace

Sono contento che abbia funzionato!

Ho provato a inviare Linux (wsl) o Windows; non ho lo stesso problema e ha funzionato per entrambi. :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 Mi Piace

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