/
Pavz
/
Project_case3
Обзор
Документация
Войти
/
Pavz
/
Project_case3
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
script_for_DB.py
99 строк
3 KB
pavel
Refactor code
04 дек 2025, 20:24
04 дек 2025, 20:24
9e52e4d
Код
Авторство
О чём код?
''' скрипт для переноса json файла в базу данных ''' import json import sqlite3 import sqlite3 def create_database(db_path='ProjectDataBase.db'): """Создаёт базу данных и таблицы, если их нет.""" conn = sqlite3.connect(db_path) cursor = conn.cursor() # Таблица категорий cursor.execute(''' CREATE TABLE IF NOT EXISTS categories ( id INTEGER PRIMARY KEY, parentId INTEGER, name TEXT NOT NULL ) ''') # Таблица предложений (товаров) cursor.execute(''' CREATE TABLE IF NOT EXISTS offers ( id INTEGER PRIMARY KEY, url TEXT, price REAL, categoryId INTEGER, pictures TEXT, name TEXT, vendor TEXT, country_of_origin TEXT, description TEXT, market_description TEXT, weight REAL ) ''') # Таблица параметров товаров cursor.execute(''' CREATE TABLE IF NOT EXISTS offer_params ( offerId INTEGER, name TEXT, value TEXT, PRIMARY KEY (offerId, name), FOREIGN KEY (offerId) REFERENCES offers(id) ON DELETE CASCADE ) ''') conn.commit() conn.close() print(f"База данных '{db_path}' и таблицы успешно созданы (если их не было).") create_database() #курсор для исполнения SQL команд session = sqlite3.connect('ProjectDataBase.db') cursor = session.cursor() #наши json файлы с категориями и товарами with open('cutted_offers.json','r',encoding = 'utf-8') as f: offers_file = json.load(f) with open('cleanCategoryData.json', 'r', encoding= 'utf-8') as f: categories_file = json.load(f) #проходимся на всем словарям внутри списка категорий for category in categories_file: cursor.execute('''INSERT OR REPLACE INTO categories (id, parentId, name) VALUES(?, ?, ?) ''', (category['id'], category['parentId'], category['categoryName'])) print(f'Данные категорий занесены в базу данных') for offer in offers_file: cursor.execute('''INSERT OR REPLACE INTO offers (id, url, price, categoryId,pictures,name,vendor, country_of_origin,description,market_description,weight) VALUES(?,?,?,?,?,?,?,?,?,?,?) ''', (offer['id'],offer['url'],offer['price'],offer['categoryId'], offer['pictures'],offer['name'],offer['vendor'],offer['country_of_origin'], offer['description'],offer['market_description'],offer['weight'])) for key,value in offer['params'].items(): cursor.execute('''INSERT OR REPLACE INTO offer_params (offerId, name, value) VALUES(?,?,?) ''', (offer['id'], key, value)) print(key,value) print('Данные офферов занесены в базу данных') session.commit() session.close()