/
kamball
/
lab9
Обзор
Документация
Войти
/
kamball
/
lab9
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
create_database.py
107 строк
4 KB
kambal23123
first_commit
20 дек 2025, 14:01
20 дек 2025, 14:01
db7f9a0
Код
Авторство
О чём код?
import sqlite3 import pandas as pd import numpy as np from datetime import datetime def create_employees_database(): """Создаем базу данных с таблицей employees""" # Подключаемся к базе данных (создаст файл если его нет) conn = sqlite3.connect('employees.db') cursor = conn.cursor() # Создаем таблицу employees cursor.execute(''' CREATE TABLE IF NOT EXISTS employees ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER, salary REAL, department TEXT, experience_years INTEGER, salary_category TEXT, hire_date TEXT ) ''') # Генерируем тестовые данные np.random.seed(42) # для воспроизводимости departments = ['IT', 'HR', 'Finance'] salary_categories = ['Низкая', 'Средняя', 'Высокая'] employees_data = [] for i in range(100): name = f"Сотрудник {i+1}" age = np.random.randint(22, 65) salary = np.random.randint(30000, 100000) department = np.random.choice(departments) experience_years = np.random.randint(0, 40) # Определяем категорию зарплаты if salary < 50000: salary_category = 'Низкая' elif salary < 60000: salary_category = 'Средняя' else: salary_category = 'Высокая' # Генерируем дату приема на работу hire_year = 2020 - experience_years hire_date = f"{hire_year}-{np.random.randint(1, 13):02d}-{np.random.randint(1, 28):02d}" employees_data.append(( name, age, salary, department, experience_years, salary_category, hire_date )) # Вставляем данные с некоторыми проблемами для тестирования # Добавляем несколько проблемных записей problematic_data = [ ("", 25, 45000, "IT", 2, "Низкая", "2021-05-15"), # пустое имя ("Сотрудник Проблемный", 200, 50000, "IT", 5, "Средняя", "2018-03-20"), # нереальный возраст ("Сотрудник Отрицательный", 30, -1000, "HR", -2, "Низкая", "2020-01-10"), # отрицательная зарплата и опыт ("Сотрудник Неизвестный", 35, 55000, "Unknown", 8, "Средняя", "2015-07-30"), # неизвестный департамент ("Сотрудник Несоответствие", 40, 70000, "Finance", 12, "Низкая", "2011-11-05"), # несоответствующая категория ] all_data = employees_data + problematic_data # Вставляем данные cursor.executemany(''' INSERT INTO employees (name, age, salary, department, experience_years, salary_category, hire_date) VALUES (?, ?, ?, ?, ?, ?, ?) ''', all_data) # Сохраняем изменения и закрываем соединение conn.commit() conn.close() print("✅ База данных employees.db успешно создана!") print(f"📊 Добавлено {len(all_data)} записей в таблицу employees") # Проверяем данные check_database() def check_database(): """Проверяем созданную базу данных""" conn = sqlite3.connect('employees.db') # Проверяем таблицы cursor = conn.cursor() cursor.execute("SELECT name FROM sqlite_master WHERE type='table';") tables = cursor.fetchall() print(f"📋 Таблицы в базе данных: {[table[0] for table in tables]}") # Проверяем данные в employees df = pd.read_sql('SELECT * FROM employees', conn) print(f"👥 Всего сотрудников: {len(df)}") print(f"📊 Структура данных:") print(df.info()) print("\n📈 Статистика по числовым полям:") print(df[['age', 'salary', 'experience_years']].describe()) conn.close() if __name__ == "__main__": create_employees_database()