Как ускорить разбор json и запись в базу данных? - PullRequest
0 голосов
/ 07 февраля 2019

Мне нужно проанализировать размер файла json 200 МБ, в конце я хотел бы записать данные из файла в базу данных sqlite3.У меня есть рабочий код Python, но для выполнения задачи требуется около 9 минут.

@transaction.atomic
def create_database():
    with open('file.json') as f:
         data = json.load(f)
         cve_items = data['CVE_Items']


        for i in range(len(cve_items)):
            database_object = Data()
            for vendor_data in cve_items[i]['cve']['affects']['vendor']['vendor_data']:
            database_object.vendor_name = vendor_data['vendor_name']


                for description_data in cve_items[i]['cve']['description']['description_data']:
                    database_object.description = description_data['value']


                for product_data in vendor_data['product']['product_data']:
                    database_object.product_name = product_data['product_name']
                    database_object.save()


                    for version_data in product_data['version']['version_data']:
                        if version_data['version_value'] != '-':
                            database_object.versions_set.create(version=version_data['version_value'])

Можно ли ускорить процесс?

Ответы [ 2 ]

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

Если предположить, что проблема в том, что файл большой, вы можете использовать потоковый анализатор json, например this

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

Предполагая, что все объекты независимы и могут обрабатываться параллельно, простым способом будет использование модуля multiprocessing .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...