Python ответ JSON на MySQLDB возвращается пустым - PullRequest
0 голосов
/ 20 марта 2020

Моя цель - проанализировать API с помощью нумерации страниц. Сохраните как фид JSON, а затем отправьте его в базу данных MySQL. После сохранения я хочу проверить, были ли добавлены какие-либо новые строки, если это так, удалите базу данных и добавьте все новые строки. (может быть, не самый лучший подход?) Однако по какой-то странной причине в mySQLDB больше ничего не сохраняется, и мои отпечатки не работают. Есть мысли о том, что я испортил?

PYTHON

import requests
import json

def dbconnect():
    try:
        db = MySQLdb.connect(
            host='localhost',
            user='root',
            passwd='',
            db='watch',
        )
    except Exception as e:
        sys.exit("Can't connect to database")
    return db

#init db
db = dbconnect()
cursor = db.cursor()

# Start getting all entries
def get_all_cracked_entries():
    # results will be appended to this list
    all_time_entries = []

    # loop through all pages and return JSON object
    for page in range(1, 4):
        url = "https://api.watch.com/api?page="+str(page)
        response = requests.get(url=url).json()
        all_time_entries.append(response)
        page += 1

        for product in response:
            print("id:", product["_id"])
            print("title:", product["title"])
            print("slug:", product["slug"])
            print("releaseDate:", product["releaseDate"])
            cursor.execute("INSERT INTO jsondump (id, title, slug, releaseDate) VALUES (%s,%s,%s,%s)", (product["_id"], product["title"], product["slug"], product["releaseDate"]))
            db.commit()

            #Check Row Count
            cursor.execute("SELECT * FROM `jsondump`")
            cursor.fetchall()
            rc = cursor.rowcount
            print("%d"%rc)

            if rc > rc+1:
                 rs = cursor.fetchall()
            else:
                cursor.execute("TRUNCATE TABLE jsondump")
                for product in response:
                    print("id:", product["_id"])
                    print("title:", product["title"])
                    print("slug:", product["slug"])
                    print("releaseDate:", product["releaseDate"])
                    print('---')
                    db = dbconnect()
                    cursor = db.cursor()
                    cursor.execute("INSERT INTO jsondump (id, title, slug, releaseDate) VALUES (%s,%s,%s)", (product["_id"], product["title"], product["slug"], product["releaseDate"]]))
                    db.commit()
                    cursor.close()

    # prettify JSON
    data = json.dumps(all_time_entries, sort_keys=True, indent=0)
    #
    return data

SAMPLE JSON

[{
"_id":"xxxxxxx",
"releaseDate":"2020-02-13T21:00:00-03:00",
"slug":"table-manners",
"title":"Table Manners","
}]  ```
...