Discourse Data Explorer SQL-Abfrage

Ich habe eine Frage, die der hier geposteten sehr ähnlich ist (aber anders): `DataExplorer::ValidationError: Missing parameter` when running Data Explorer queries with [params] via API.

Meine Abfrage im Data Explorer sieht so aus:

-- [params]
-- topic_id :topic_id

SELECT * FROM posts WHERE topic_id = :topic_id

Das funktioniert im Data Explorer einwandfrei. Wenn ich dann versuche, sie über die API auszuführen, erhalte ich:

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

Hier ist meine Python-Anfrage:


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)

Ich entnehme der Fehlermeldung, dass ich “topic_id” nicht als String übergeben kann, aber ich sehe keine andere Möglichkeit, es als Schlüssel zu übergeben. Irgendwelche Gedanken dazu?

1 „Gefällt mir“

Die Parameter werden nicht in der URL übergeben.

Vielleicht so etwas wie: data={“params”: ‘{“topic_id”:\"398\"}’}?

Ich musste viele verschiedene Alternativen ausprobieren, aber diese funktionierte:\n\nresponse = requests.post(url=\"REDACTED\",\n headers=headers, data={'params': '{\\\"topic_id\\\": \"398\"}'})\n\nDie Antwort ist also eine Kombination aus dem vorherigen Beitrag (der besagte, dass man Anführungszeichen maskieren muss, wenn man von einem Windows-Rechner sendet) und Arkshines Beitrag, der besagt, dass es als Daten und nicht als Parameter-Keyword-Argument übergeben werden muss. Was ich jedoch seltsam finde, ist, dass ich dachte, der Sinn des Parameter-Keyword-Arguments im Python-Requests-Modul sei die Übergabe von Parameterinformationen.

1 „Gefällt mir“

Es freut mich, dass es funktioniert hat!

Ich habe versucht, Linux (wsl) oder Windows zu senden; ich habe nicht das gleiche Problem und es hat für beides funktioniert. :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 „Gefällt mir“

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