sqlite3 не может добавить большое количество записей: набор данных yelp - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь получить все отзывы, связанные со всеми предприятиями, расположенными в Нью-Йорке, из набора данных Yelp Academi c. HTTP-запросы отправляются в Yelp Fusion API. Я использую sqlite3 для хранения записей в базе данных. Кажется, что sqlite не может обрабатывать такой большой объем данных. Не удается ввести значения полей в таблицу просмотра после выполнения одного вызова API. Ниже приведен сценарий.

import requests
import json
import sqlite3

api_key = ########
headers = {'Authorization': 'Bearer %s' % api_key}

conn = sqlite3.connect('businesses.db')
cur = conn.cursor()



cur.executescript('''
            Drop Table If Exists Review;
            CREATE TABLE Review(
            user_id TEXT Not Null Primary Key,
            business_id TEXT Not Null,
            time_created TEXT Unique,
            rating TEXT,
            review TEXT)
            ''')

cur.execute(''' Select business_id From Business''')

for row in cur:
    business_id = row[0]
    print(business_id)
    url = 'https://api.yelp.com/v3/businesses/' + business_id + '/reviews'
    req = requests.get(url, headers=headers)
    js = json.loads(req.text)
    for item in js['reviews']:
        cur.execute(''' Insert Into Review(business_id, user_id,
                time_created, rating, review) Values(?,?,?,?,?) ''',
            (business_id, item['user']['id'], item['time_created'], item['rating'], item['text']))

Я сохранил все значения business_id в отдельной таблице с именем Business, поскольку вызов API, необходимый для получения всех этих записей, отличается.

Проблема связана с cur.execute(''' Insert Into Review(business_id, user_id, time_created, rating, review) Values(?,?,?,?,?) ''', (business_id, item['user']['id'], item['time_created'], item['rating'], item['text'])), который не удается ввести значения полей. Однако l oop перебирает все business_ids. Есть 976 уникальных значений business_id.

Может кто-нибудь сказать мне, если проблема в самом sqlite или есть ошибка в скрипте и нужно ли мне переключиться на mysql .connector.

...