Obrigado.
Consegui fazer isso com este plugin, usando esta consulta:
--[params]
-- string :q_email
SELECT u.username FROM users u JOIN user_emails e ON u.id=e.user_id WHERE e.email = :q_email
E chamando-o com o script python:
import pydiscourse
client = DiscourseClient('https://forum.com', api_username='system', api_key='1234')
params = '{\"q_email\":\"' + str(email) + '\"}'
response = client._request('POST', '/admin/plugins/explorer/queries/{number}/run', params={\"params\":params}) # Sim, existem 3 params, cada um representando algo diferente. Boa prática de hacking!
username=response["rows"]