No web server, no bloat, no dashboard you didn't ask for. Just a clean desktop app for adding, updating, searching, and reporting on employee data — backed by a real MySQL table.
| id | name | position | salary |
|---|---|---|---|
| 01 | A. Kapoor | Engineer | ₹82,000 |
| 02 | R. Chen | Designer | ₹74,500 |
| 03 | S. Alvarez | Manager | ₹96,200 |
Nothing hidden behind the UI — each button in the app corresponds directly to a query running against your employees table.
Create a new record with name, position, and salary in one form.
Edit any field on an existing employee and save the change instantly.
Remove a record with a confirmation step so nothing is lost by accident.
Filter the table live as you type, no separate search screen needed.
Click a column header to sort records ascending or descending.
See the total payroll for the currently filtered set of employees.
Prerequisites: Python installed and on PATH, a running MySQL server (XAMPP works well locally), and pip.
Grab Python from python.org (enable "Add to PATH"), then install XAMPP and start Apache + MySQL from its control panel.
Import Database_Schema.sql through phpMyAdmin, or run the schema SQL manually — see the schema section below.
Run enviroment.bat, or set DB_HOST, DB_USER, DB_PASSWORD, and DB_NAME yourself.
Double-click setup.bat — it installs dependencies, imports the schema if needed, and launches the app.
:: one-click setup and launch
setup.bat
Install Python 3.9+ and a local MySQL/MariaDB server, or use XAMPP for a quick local setup.
Import Database_Schema.sql through phpMyAdmin, or run the schema SQL manually — see the schema section below.
Source enviroment.zsh, or export DB_HOST, DB_USER, DB_PASSWORD, and DB_NAME yourself.
Make it executable and run it — it installs dependencies, imports the schema if needed, and launches the app.
# one-click setup and launch
chmod +x setup.sh
./setup.sh
The app never hardcodes credentials — it reads them from your shell environment at launch.
set DB_HOST=localhost
set DB_USER=root
set DB_PASSWORD=
set DB_NAME=Employees
$env:DB_HOST="localhost"
$env:DB_USER="root"
$env:DB_PASSWORD=""
$env:DB_NAME="Employees"
export DB_HOST=localhost
export DB_USER=root
export DB_PASSWORD=
export DB_NAME=Employees
One table, six columns. Import Database_Schema.sql in phpMyAdmin, or run this directly in MySQL.
CREATE DATABASE IF NOT EXISTS Employees
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE Employees;
CREATE TABLE IF NOT EXISTS employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
position VARCHAR(100) NOT NULL,
salary DECIMAL(10, 2) NOT NULL CHECK (salary >= 0),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;
A PyInstaller spec file ships with the project, so most people won't need the manual command.
pyinstaller --clean EmployeeManagementSystem.spec
pyinstaller --onefile --windowed \
--icon app.ico \
--add-data "app.png;." \
--add-data "app.ico;." \
--name EmployeeManagementSystem main.py
On macOS/Linux, replace the semicolons in --add-data with colons. Output lands in dist/.
pip install mysql-connector-python and try again.DB_HOST, DB_USER, and DB_PASSWORD are correct, and that the database in DB_NAME actually exists.DB_NAME matches the database you created — it defaults to Employees.pip install pyinstaller, then re-run your build command.