Как хранить ответ API в базе данных MySQL с использованием Python? - PullRequest
0 голосов
/ 06 февраля 2019

Я новичок в разработке на Python, MySQL и API.Итак, я создал простой запрос из календаря планирования с помощью почтальона (после нескольких часов онлайн-исследований).Я смог создать базу данных MySQL на localhost.Мне удалось вставить данные с помощью Python, но я хочу сохранить ответ API не вручную.Пожалуйста, посмотрите на мой код, и я был бы очень признателен, если бы кто-то мог помочь мне в этом.

Запрос вызова с использованием Python

    import requests

    url = "https://shedul.com/api/v1/appointments"
    querystring = {"minDate":"02/01/2019","maxDate":"02/08/2019"}

    payload = ""
    headers = {
        'Authorization': "Basic ************************"}

    response = requests.request("GET", url, data=payload, headers=headers, params=querystring)
    print(response.json())

Я получу ответ примерно так (у меня будет очень много запросов и больше полей, но мне нужно эти несколько полей),

[
    {
        "id": 2649,
        "firstName": "Walikada",
        "lastName": "Sumana",
        "phone": "7894561452",
        "email": "wsumanar@gmail.com",
        "date": "February 8, 2019",
        "time": "2:00pm",
        "endTime": "3:00pm",
        "dateCreated": "February 5, 2019",
        "datetimeCreated": "2019-02-05T15:57:13-0600",
        "datetime": "2019-02-08T14:00:00-0700",
    },
    {
        "id": 264693950,
        "firstName": "Wade",
        "lastName": "Gulikapupusa",
        "phone": "789691985",
        "email": "W.Gulika77@yhaoo.com",
        "date": "February 8, 2019",
        "time": "2:00pm",
        "endTime": "2:20pm",
        "dateCreated": "February 4, 2019",
        "datetimeCreated": "2019-02-04T15:05:07-0600",
        "datetime": "2019-02-08T14:00:00-0600",
     }
]

Код, который я нашел для подключения к базе данных MySQl,

import mysql.connector

connection = mysql.connector.connect(
              host="localhost",
              user="root",
              passwd="admin",
              database="techbrandtest"
            )
mycursor = connection.cursor()

sqlcode = """INSERT INTO techbrandtest.acuity 
                (
                    id, 
                    firstName, 
                    lastName,
                    phone,
                    email,
                    date,
                    time,
                    endTime,
                    dateCreated,
                    datetimeCreated,
                    datetime                     

                ) 
                VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""

insertvalues = ('546606', 'Suneth', 'Tharinda', '8016381256', 'wimalasena@gmail.com', '2019-02-02', '', '','2019-02-02','2019-02-02 23:59:59', '2019-02-05 23:59:59')

mycursor.execute(sqlcode, insertvalues)
connection.commit()
print(mycursor.rowcount, "was inserted.")

Я хочу сделать его одним кодом и хранить каждый ответ в базе данных MySQL.Я не уверен, что это слишком много, чтобы просить, но любая помощь будет высоко оценена.

Большое спасибо за ваше время

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

В Python у вас есть очень полезный инструмент для работы с базами данных.Это называется SQLAlchemy.С его помощью вам не нужно писать сырой SQL, вы можете использовать таблицы базы данных в качестве объектов Python.Хотя вам нужно узнать его API.

Ответ может быть сохранен как поле JSON в базе данных, или вы можете создать для него дополнительную таблицу (в случае, если ответы выглядят одинаково все время).Вы можете сохранить его перед отправкой ответа, и он будет сохранен «автоматически».

Если у вас есть дополнительные вопросы или мой ответ не содержит того, что вам нужно, просто прокомментируйте этот ответ.Хорошего дня.

0 голосов
/ 06 февраля 2019

Если я правильно понимаю ваш вопрос, то вы сможете достичь этого, просто используя цикл for.

например,

    for i in response:
        mycursor.execute(sqlcode, (i['id'],i['firstName']))           
...