From d8d8979268a072d52c6f4c01f65be30e5408fc62 Mon Sep 17 00:00:00 2001 From: user_3d Date: Thu, 9 Oct 2025 15:02:42 +0500 Subject: [PATCH] =?UTF-8?q?20251009=20=D0=A0=D0=B0=D0=B1=D0=BE=D1=87=D0=B8?= =?UTF-8?q?=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 119 +++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 91 insertions(+), 28 deletions(-) diff --git a/main.py b/main.py index 0b751ba..0d6fce4 100644 --- a/main.py +++ b/main.py @@ -164,8 +164,31 @@ for sale in sales_data: (product_id, partner_id, quantity, sale_date, sale_price)) except Exception as e: print(f"Ошибка при добавлении продажи: {sale}, ошибка: {e}") + conn.commit() + +def print_partners(partners_df): + """Функция для красивого ввода данных о партнерах""" + if partners_df is None or partners_df.empty: + print("Нет данных о партнерах") + return + # Вводим данные в удобном формате + print("=" * 120) + print("{:<7} {:<20} {:<35} {:<20} {:<10}".format( + "Тип", "Наименование", "Директор", "Телефон", "Рейтинг")) + print("=" * 120) + + for _, row in partners_df.iterrows(): + print ("{:<7} {:<20} {:<35} {:<20} {:<10}".format( + row['Тип партнера'][:7], + row['Наименование партнера'][:20], + row['Директор'][:35], + row['Телефон'][:20], + row['Рейтинг'] + )) + + print("="*120) + print(f"Всего партнеров: {len(partners_df)}") -conn.commit() def print_partner_cards(partners_df): """ Функция для вывода партнеров в виде карточек с выравниванием""" @@ -174,35 +197,71 @@ def print_partner_cards(partners_df): return for index, row in partners_df.iterrows(): - print("╔" + "═" * 69 + "╗") - print(f"║ {'КАРТОЧКА ПАРТНЕРА':^67} ║") - print("╠" + "═" * 69 + "╣") + print("╔" + "═" * 78 + "╗") + print(f"║ {'КАРТОЧКА ПАРТНЕРА':^76} ║") + print("╠" + "═" * 78 + "╣") # Используем разные кавычки для избежания конфликта - type_text = f"Тип: {row['Тип партнера']}" - name_text = f"Наименование: {row['Наименование парьнера']}" - director_text = f"Директор: {row['Директор']}" - rating_text = f" Рейтинг: {row['Рейтинг']}" - email_text = f"Контакты: {row['Электронная почта']}" - phone_text = f"Телефон:{row['Телефон']}" - inn_text = f"ИНН: {row['ИНН']}" + type_text = f"Тип: {row['Тип партнера']}" + name_text = f"Наименование: {row['Наименование партнера']}" + director_text = f"Директор: {row['Директор']}" + rating_text = f" Рейтинг: {row['Рейтинг']}" + email_text = f"Контакты: {row['Электронная почта']}" + phone_text = f"Телефон:{row['Телефон']}" + inn_text = f"ИНН: {row['ИНН']}" + address_text = f"Адрес: {row['Юридическое лицо']}" - address = row ['Юридический адрес'] - if len(address) > 60: - address = address[:57] + "..." - address_text = f"Адрес: {address}" - print(f"║ {type_text:<67}║") - print(f"║ {name_text:<67}║") - print(f"║ {director_text:<67}║") - print(f"║ {rating_text:<67}║") - print(f"║ {'':<67}║") - print(f"║ {email_text:<67}║") - print(f"║ {phone_text:<67}║") - print(f"║ {'':<67}║") - print(f"║ {inn_text:<67}║") - print(f"║ {address_text:<67}║") - print("╚" + "=" * 69 + "╝") - print() + print(f"║ {type_text:<77}║") + print(f"║ {name_text:<77}║") + print(f"║ {director_text:<77}║") + print(f"║ {rating_text:<77}║") + print(f"║ {'':<77}║") + print(f"║ {email_text:<77}║") + print(f"║ {phone_text:<77}║") + print(f"║ {'':<77}║") + print(f"║ {inn_text:<77}║") + print(f"║ {address_text:<77}║") + print("╚" + "=" * 78 + "╝") + print() +def get_partners(db_path='partners.db', sort_by='rating', ascending=False): + try: + # Подключаемся к базе данных + conn = sqlite3.connect(db_path) + + # SQL запрос для получения данных о партнерах + query = """ + SELECT + pt.type_name AS "Тип партнера", + p.name AS "Наименование партнера", + p.director AS "Директор", + p.email AS "Электронная почта", + p.phone AS "Телефон", + p.legal_address AS "Юридическое лицо", + p.inn AS "ИНН", + p.rating AS "Рейтинг", + p.created_at AS "Дата создания" + FROM Partner p + JOIN PartnerType pt ON p.partner_type_id = pt.id + """ + # Добавляем сортировку + if sort_by == 'rating': + query += "ORDER BY p.rating" + elif sort_by == 'name': + query += "ORDER BY pt.type_name, p.name" + else: + query += "ORDER BY p.rating" + + query += " DESC" if not ascending else " ASC" + + df = pd.read_sql_query(query, conn) + conn.close() + return df + except sqlite3.Error as e: + print(f"Ошибка базы данных: {e}") + return None + except Exception as e: + print (f"Общая ошибка:{e}") + return None if __name__ == "__main__": print("Данные успешно добавлены в базу данных!") @@ -213,4 +272,8 @@ if __name__ == "__main__": count = cursor.fetchone()[0] print(f"{table}: {count} записей ") -conn.close() + conn.close() + print("1. КАРТОЧКИ ПАРТНЕРОВ ( сортировка по рейтингу") + print("=" * 70) + partners = get_partners(sort_by='rating', ascending=False) + print_partner_cards(partners)