LINUX.ORG.RU

CURL + Python

 ,


0

2

Всем привет!

мне необходимо перенести большое количество данных из SQL дампа в вики страницы confluence

в документации запрос для создания новой запиcи через REST выглядит так

curl -u admin:admin -X POST -H 'Content-Type: application/json' -d'{"type":"page","title":"new page",
"space":{"key":"TST"},"body":{"storage":{"value":"<p>This is <br/> a new page</p>","representation":
"storage"}}}' http://localhost:8080/confluence/rest/api/content/ | python -mjson.tool

Но поскольку данных будет много, мне их в цикле придется их перебирать, нужно сделать все то же самое из python файла. Как должен выглядеть файл в моем случае?

Если вопрос про питон вылез из:

| python -mjson.tool

То тут он вызывается для pretty-вывода в консоль результата курла. Т.е. для фактического post он в этой команде не используется, а только лишь форматирует результат.

Если питон тут нужен для автоматизации - то смотрите requests. С его помощью легко отправлять посты с json-payload.

Deleted ()

Python 3.4

Если ненужны кукисы, можно стандартной urllib3 обойтись, там смотри только какая версия у тебя питона, сейчас начал «urllib3» вызывать из под 3.6 - ImportError, такая же история как с reduce похоже

import urllib3
import json


json_data = json.dumps({
    'type': 'page',
    # ...
})

http = urllib3.PoolManager()
url = 'http://localhost:8080/confluence/rest/api/content/'
headers = urllib3.util.make_headers(basic_auth='admin:admin')
headers['Content-Type'] = 'application/json'
r = http.request('POST', url,
                 headers=headers,
                 body=json_data)

print(r.read()) # Do something with response

domik_v_derevne ()
Ответ на: комментарий от Octagon

Напрасно, она наверное самое тормозное что есть в пистоне. Pycurl обмазываешься и всё, быстрее и эфективней работать просто не будет.

Касательно ОП:

нужно сделать все то же самое из python

зачем? Сильно лучше не станет, вполне нормально скармливать скрипту результат из оболочки.

anonymous ()