От ответов API к PostgreSQL таблицам - PullRequest
0 голосов
/ 09 апреля 2020

Контекст

Я ищу эффективный и надежный рабочий процесс для выгрузки данных из ответов API в базу данных PostgreSQL.

Подробное объяснение

У меня есть доступ к проекту RESTful API , на который я могу отправить запросов (рис. 1) и который дает мне ответов как JSON данных.

Например, при использовании, например, почтальон , я могу построить запрос используя все параметры, которые учитываются API и которые, например, могут выглядеть следующим образом:

Request example in cURL Рис. 1: Пример запроса в cURL .

Соответствующий ответ выглядит следующим образом:

[
    {
        "id": "128",
        "user": "UUID-981729jqdwm91888r",
        "description": {
            "producer": "John Wayne",
            "title": "Alamo",
            "year": 1960
        },
        "preview": {
            "imageURL": "11231068.jpg"
        }
    },
    {
    ...
    }
]

С другой стороны, у меня есть PostgreSQL база данных (внутри контейнера docker ), которая уже структурирована для приема данных ответа. Например, все отдельные элементы фильма из предыдущего результата должны быть записаны в таблицу 'films' (рис. 2).

A PostgreSQL table example
Рис. 2: Пример того, как будет выглядеть итоговая таблица PostgreSQL.


Дело в том, что я не знаю, с чего начать, поскольку я всегда запрашивал API через свой веб-браузер или почтальон до сих пор.

Суммируя , я должен сбросить ответы API в структурированном наборе PostgreSQL таблиц следующим образом:
one API route that is requested --> one JSON response (with multiple features) --> one PostgreSQL table (with multiple rows)
одна строка, соответствующая одной из функций ответа ).

Вопрос

Как я мог технически это сделать; Можно ли создавать запросы API непосредственно в SQL (у меня такое чувство, что это очень плохая идея) или мне нужно использовать другой язык или инструмент (из соображений безопасности или просто из-за практичности)?

При поиске в Интернете таких вещей я почти всегда находил ответ на вопрос «как совершать вызовы API для базы данных Postgres?», Что явно не то, что я хочу.

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Так что, если я вас правильно понимаю, вы хотите взять данные из веб-API и вывести их в базу данных какой-либо формы, возможно, для последующей обработки данных.

К моему удивлению, существует такая в Postgres нужно делать то, что вы хотите, хотя вам нужно ослабить чистое требование SQL. Если вы готовы использовать PL / PG SQL, существует этот плагин , который добавляет HTTP-клиент для использования в Postgres.

Для одноразового скрипта, и вы не возражаете работать с расширениями процедурного языка в Postgres, я думаю, это было бы хорошо. Однако здравый смысл, сценарий Python будет безопаснее, проще и в целом проще в разработке, чем PG SQL. Лично я бы go с маршрутом Python, но я не администратор базы данных, который учитывает мои предпочтения.

На самом деле, если вы не заботитесь о чистоте работы с реляционной базой данных или не так удобны, вы можете использовать ORM, например SQLAlchemy , чтобы упростить эту задачу, а затем иметь объекты должны быть сериализованы в Python объекты с некоторой предварительной работой. Если вам не нравится идея ORM, вы также можете использовать SQLAlchemy для абстрагирования и обработки соединения с базой данных и настройки таблиц.

Конечно, если вы знакомы с SQL, существует больше базовых библиотек, которые устанавливают соединение с базой данных на Postgres и включают поддержку курсоров, подготовленных операторов и чего-то еще. Для Python есть psycopg2 ; для JavaScript есть узел- postgres

1 голос
/ 09 апреля 2020

Попробуйте создать службу, которая может

  • Позвонить в API отдыха и получить данные
  • Структурированные данные для таблицы БД
  • Затем поместить данные в База данных

Вы можете установить временной интервал / запланированное время для этой работы.

Вы можете использовать golang для создания этой службы или другого языка, с которым вы знакомы.

...