/
megaokna43
/
courses_work_5
Обзор
Документация
Войти
/
megaokna43
/
courses_work_5
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/db_module.py
76 строк
3 KB
megaokna43
рабочая версия кода
20 дек 2024, 15:01
20 дек 2024, 15:01
cc31bf6
Код
Авторство
О чём код?
import psycopg2 from src.hh_vacancy_parser import HHVacancyParsing from config import config class DBModule: def __init__(self, db_name): """ Инициализация класса DBModule. :param db_name: Имя базы данных для подключения. """ self.db_name = db_name self.conn = psycopg2.connect(dbname=self.db_name, **config()) def create_tables(self): """ Создание таблиц employer и vacancies в базе данных. """ try: with self.conn: with self.conn.cursor() as cursor: cursor.execute( ''' CREATE TABLE IF NOT EXISTS employer ( employer_id INT PRIMARY KEY, employer_name VARCHAR(150) ); ''' ) cursor.execute( ''' CREATE TABLE IF NOT EXISTS vacancies ( vacancy_id INT PRIMARY KEY, company_id INT REFERENCES employer(employer_id), vacancy_name VARCHAR(250) NOT NULL, salary_from INT, salary_to INT, url VARCHAR(250) ); ''' ) except Exception as e: print(f"Ошибка при создании таблиц: {e}") def full_tables(self, value): """ Заполнение таблиц employer и vacancies данными. :param value: Данные, полученные от пользователя для обработки. """ head_hunter = HHVacancyParsing(value) # Инициализация парсера вакансий employers = head_hunter.get_employers_sort() # Получение отсортированного списка работодателей vacancies = head_hunter.filter_vacancies() # Фильтрация вакансий with self.conn: with self.conn.cursor() as cursor: # Заполнение таблицы employer for employer in employers: cursor.execute( """ INSERT INTO employer (employer_id, employer_name) VALUES (%s, %s) ON CONFLICT (employer_id) DO NOTHING """, (employer["id"], employer["name"]) ) # Заполнение таблицы vacancies for vacancy in vacancies: cursor.execute( """ INSERT INTO vacancies (vacancy_id, company_id, vacancy_name, salary_from, salary_to, url) VALUES (%s, %s, %s, %s, %s, %s) ON CONFLICT (vacancy_id) DO NOTHING """, (vacancy["id"], vacancy["employer"], vacancy["name"], vacancy["salary_from"], vacancy["salary_to"], vacancy["url"]) )