Задание №3
Организовать загрузку в БД данных со страницы https://www.atsenergo.ru/results/rsv/statistics. Необходимо загрузить исторические данные и ежедневно подгружать свежие обновления. Приложить DDL для таблицы в БД (связывать с другими таблицами не надо, пользователи будут работать с данными как есть) и код скриптов.
Требованияя и зависимости
Python 3.11 Postgres 12.15
Библиотеки:
- pipenv
- beautifulsoup4
- lxml
- requests
- psycopg2
- configparser
- pandas
- schedule
Установка
pip install pipenv
pipenv install
Настройка базы данных
В файле db.ini задать параметры к подключаемой базе данных.
Запуск
pipenv run python app.py
или
pipenv shell
python app.py
DDL для таблицы в БД
CREATE TABLE IF NOT EXISTS stat_on_market ( dat date NOT NULL, price_zone_code int, consumer_price numeric, consumer_volume numeric, thermal_volume numeric, hydro_volume numeric, atomic_volume numeric, renewable_volume numeric, PRIMARY KEY (dat, price_zone_code)
)
Примеры
from etl_atsenergo import ETL_Atsenergo
etl = ETL_Atsenergo()
Выгружаем исторические данные
data = etl.extract_history()
Сохраняем в csv
etl.save_csv(data, ‘result.csv’)
Читаем из csv
data = etl.read_csv(‘result.csv’)
Выгружаем данные с сайта
data = etl.extract_last()
print(’load ‘, len(data), ’ row(s)’)
Создаем таблицу
etl.create_table()
Загружаем данные в базу данных
etl.load(data)