This commit is contained in:
user_3d 2025-11-08 09:16:13 +05:00
parent c4ee9d6ff5
commit ed53e46f18
2 changed files with 176 additions and 1 deletions

View file

@ -3,7 +3,7 @@ import pandas as pd
import os import os
import sys import sys
import openpyxl import openpyxl
#61125 #611255
def create_tables(db_connection): def create_tables(db_connection):
"""Создает все необходимые таблицы в базе данных""" """Создает все необходимые таблицы в базе данных"""

175
read.txt
View file

@ -2,3 +2,178 @@
Файл с типами продукции: Product_type_import.xlsx Файл с типами продукции: Product_type_import.xlsx
Файл с продуктами: Products_import.xlsx Файл с продуктами: Products_import.xlsx
Файл с продажами: Partner_products_import.xlsx Файл с продажами: Partner_products_import.xlsx
def check_database():
"""
Проверяет количество записей в основных таблицах базы данных.
Функция подключается к SQLite базе данных 'partners.db' и выводит
количество записей в таблицах: PartnerType, Partner, ProductType,
Product, Sale.
Входные параметры:
Нет
Выходные параметры:
Нет
Действия:
- Выводит в консоль количество записей каждой таблицы
- Автоматически закрывает соединение с базой данных
"""
def load_data_from_files():
"""
Загружает данные из Excel файлов в базу данных.
Функция выполняет загрузку данных из Excel файлов в соответствующие таблицы
базы данных SQLite. Подключается к БД, создает курсор для выполнения запросов
и осуществляет импорт данных.
Входные параметры:
Нет
Выходные параметры:
Нет
Действия:
- Устанавливает соединение с базой данных 'partners.db'
- Создает курсор для выполнения SQL-запросов
- Загружает данные из Excel файлов в таблицы БД
- Фиксирует изменения в базе данных
- Закрывает соединение с БД
"""
def get_partners(db_path='partners.db', sort_by='rating', ascending=False):
"""
Получает список партнеров из базы данных с агрегированной информацией о продажах.
Функция выполняет запрос к базе данных для получения информации о партнерах,
включая данные об их типе, рейтинге и общем количестве проданных товаров.
Результаты могут быть отсортированы по различным полям.
Входные параметры:
db_path (str): Путь к файлу базы данных. По умолчанию 'partners.db'
sort_by (str): Поле для сортировки результатов. По умолчанию 'rating'
ascending (bool): Направление сортировки.
True - по возрастанию, False - по убыванию.
По умолчанию False (по убыванию)
Выходные параметры:
list: Список кортежей с данными о партнерах или None в случае ошибки
Возвращаемые данные включают:
- Тип партнера
- Наименование партнера
- Директор
- Электронная почта
- Телефон
- Юридический адрес
- ИНН
- Рейтинг
- Дата создания
- Общее количество проданных товаров
Исключения:
Обрабатывает исключения базы данных и возвращает None в случае ошибки
"""
def create_tables(db_connection):
"""
Создает все необходимые таблицы в базе данных.
Функция выполняет создание таблиц в базе данных согласно предопределенной
схеме. Использует переданное соединение с БД для выполнения SQL-запросов
создания таблиц.
Входные параметры:
db_connection (sqlite3.Connection): Объект соединения с базой данных
Выходные параметры:
None
Действия:
- Создает курсор для выполнения SQL-запросов
- Выполняет SQL-запросы на создание таблиц
- Фиксирует изменения в базе данных
- Не закрывает соединение с БД (оставляя это вызывающей стороне)
"""
def calculate_discount(total_quantity):
"""
Рассчитывает размер скидки на основе общего количества проданных товаров.
Функция определяет процент скидки в зависимости от объема продаж
по заданной градации.
Входные параметры:
total_quantity (int): Общее количество проданных товаров
Выходные параметры:
tuple: Кортеж содержащий:
- discount_percent (int): Процент скидки (0-15)
- discount_description (str): Текстовое описание скидки
Примеры возвращаемых значений:
(15, '15% (более 300000 ед.)')
(10, '10% (50000-300000 ед.)')
(5, '5% (10000-50000 ед.)')
(0, '0% (до 10000 ед.)')
"""
def get_sales_history(db_path='partners.db', limit=50, sort_by='date_desc'):
"""
Получает историю реализации продукции с разными вариантами сортировки.
Функция выполняет запрос к базе данных для получения детальной истории
продаж, включая информацию о партнерах, продукции и финансовых показателях.
Поддерживает различные варианты сортировки результатов.
Входные параметры:
db_path (str): Путь к файлу базы данных. По умолчанию 'partners.db'
limit (int): Ограничение количества возвращаемых записей. По умолчанию 50
sort_by (str): Критерий сортировки результатов. Доступные варианты:
'date_desc' - по дате продажи (убывание)
'date_asc' - по дате продажи (возрастание)
'quantity_desc' - по количеству (убывание)
'amount_desc' - по общей сумме (убывание)
По умолчанию 'date_desc'
Выходные параметры:
list: Список кортежей с данными о продажах или None в случае ошибки
Возвращаемые данные включают:
- Дата продажи
- Наименование партнера
- Наименование продукции
- Артикул продукции
- Количество проданных единиц
- Цена за единицу
- Общая сумма продажи
- Тип продукции
Исключения:
Обрабатывает исключения базы данных и возвращает None в случае ошибки
"""
def simple_choice(options):
"""
Выводит меню выбора опций и запрашивает ввод пользователя.
Функция отображает пронумерованный список доступных опций в формате меню
и возвращает выбранный пользователем номер опции.
Входные параметры:
options (list): Список строк с названиями опций для выбора
Выходные параметры:
int: Номер выбранной опции (от 1 до количества опций)
Действия:
- Выводит заголовок меню
- Отображает все опции с нумерацией
- Запрашивает ввод пользователя
- Возвращает выбранный номер
"""