/
Askoline
/
Homework_DB2
Обзор
Документация
Войти
/
Askoline
/
Homework_DB2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
main.py
155 строк
5 KB
Askoline
Initial commit: система управления клиентами
02 авг 2026, 14:28
02 авг 2026, 14:28
1333054
Код
Авторство
О чём код?
""" Главный файл программы для демонстрации работы """ import psycopg2 from config import DB_CONFIG from db_manager import ClientManager def print_client(client): """Вспомогательная функция для красивого вывода информации о клиенте""" phones_str = ", ".join(client['phones']) if client['phones'] else "нет телефонов" print(f" {client['first_name']} {client['last_name']} (ID: {client['id']})") print(f" Email: {client['email']}") print(f" Телефоны: {phones_str}") print() def demo(): """Демонстрация работы всех функций""" print("=" * 70) print("ДЕМОНСТРАЦИЯ РАБОТЫ СИСТЕМЫ УПРАВЛЕНИЯ КЛИЕНТАМИ (PostgreSQL)") print("=" * 70) # Подключение к базе данных try: conn = psycopg2.connect(**DB_CONFIG) print("✓ Подключение к БД установлено") except Exception as e: print(f"✗ Ошибка подключения к БД: {e}") print(" Убедитесь, что PostgreSQL запущен и параметры подключения верны") return # Создаем менеджер manager = ClientManager(conn) try: # Создаем структуру БД print("\n1. СОЗДАНИЕ БАЗЫ ДАННЫХ") print("-" * 50) manager.create_db() # Добавляем клиентов print("\n2. ДОБАВЛЕНИЕ КЛИЕНТОВ") print("-" * 50) client1_id = manager.add_client( first_name="Иван", last_name="Петров", email="ivan@example.com", phones=["+7-999-123-45-67", "+7-999-987-65-43"] ) client2_id = manager.add_client( first_name="Мария", last_name="Сидорова", email="maria@example.com", phones=["+7-999-111-22-33"] ) client3_id = manager.add_client( first_name="Алексей", last_name="Иванов", email="alex@example.com" ) # Добавляем телефон существующему клиенту print("\n3. ДОБАВЛЕНИЕ ТЕЛЕФОНА СУЩЕСТВУЮЩЕМУ КЛИЕНТУ") print("-" * 50) manager.add_phone(client1_id, "+7-999-555-44-33") # Изменяем данные клиента print("\n4. ИЗМЕНЕНИЕ ДАННЫХ КЛИЕНТА") print("-" * 50) manager.change_client(client2_id, last_name="Смирнова") # Удаляем телефон print("\n5. УДАЛЕНИЕ ТЕЛЕФОНА") print("-" * 50) manager.delete_phone(client1_id, "+7-999-987-65-43") # Поиск клиентов print("\n6. ПОИСК КЛИЕНТОВ") print("-" * 50) print("\n Поиск по имени 'Иван':") results = manager.find_client(first_name="Иван") for client in results: print_client(client) print("\n Поиск по телефону '+7-999-111':") results = manager.find_client(phone="+7-999-111") for client in results: print_client(client) print("\n Поиск по email 'example.com':") results = manager.find_client(email="example.com") for client in results: print_client(client) print("\n Поиск по фамилии 'Иванов':") results = manager.find_client(last_name="Иванов") for client in results: print_client(client) # Все клиенты print("\n7. ВСЕ КЛИЕНТЫ В СИСТЕМЕ") print("-" * 50) all_clients = manager.get_all_clients() for client in all_clients: print_client(client) # Удаляем клиента print("\n8. УДАЛЕНИЕ КЛИЕНТА") print("-" * 50) manager.delete_client(client3_id) # Проверяем, что клиент удален client = manager.get_client_by_id(client3_id) if client is None: print(" ✓ Клиент успешно удален из базы данных") # Ошибки print("\n9. ОБРАБОТКА ОШИБОК") print("-" * 50) try: manager.add_client("Дубликат", "Тестов", "ivan@example.com") except ValueError as e: print(f" ✗ Ожидаемая ошибка: {e}") try: manager.add_phone(client1_id, "+7-999-123-45-67") except ValueError as e: print(f" ✗ Ожидаемая ошибка: {e}") try: manager.delete_client(9999) except ValueError as e: print(f" ✗ Ожидаемая ошибка: {e}") print("\n" + "=" * 70) print("ДЕМОНСТРАЦИЯ ЗАВЕРШЕНА УСПЕШНО") print("=" * 70) except Exception as e: print(f"\n✗ Ошибка: {e}") conn.rollback() finally: conn.close() print("\n✓ Соединение с БД закрыто") if __name__ == "__main__": demo()