员工信息查询系统:完整代码与说明文档
员工信息查询系统:完整代码与说明文档
一、项目全景图
plaintext
employee-query-system/ |
二、完整代码解析
1. 数据库配置:config.py
python
#!/usr/bin/env python |
2. 数据库连接:db_connection.py
python
#!/usr/bin/env python |
3. 主程序入口:main.py
python
#!/usr/bin/env python |
4. 查询逻辑:query.py
python
#!/usr/bin/env python |
5. 结果展示:result_display.py
python
#!/usr/bin/env python |
6. 依赖清单:requirements.txt
txt
# 数据库连接依赖 |
7. 项目说明文档:README.md
员工信息查询系统
A Python-based tool to query employee information from a MySQL database, supporting multi-condition filtering (by name, department, or minimum salary).
项目简介
该系统用于从 employees MySQL 数据库中查询员工信息,支持三种查询模式:按姓名、按部门名称、按最低工资,返回员工编号、姓名、部门、职位、薪资等关键信息。
核心功能
- 连接 MySQL 数据库并验证连接有效性
- 支持三种查询模式:
- 按员工姓名查询(精确匹配)
- 按部门名称查询(支持含空格的部门名,如
"Senior Management") - 按最低工资查询(返回薪资不低于指定值的员工)
- 格式化展示查询结果,无匹配时提示明确信息
- 自动处理数据库连接的创建与关闭,确保资源释放
环境要求
- Python 版本:3.5 及以上
- 数据库:MySQL 5.7 及以上(需预先创建
employees数据库及关联表,表结构需包含employees、dept_emp、titles、salaries、departments) - 依赖库:
pymysql(版本1.1.0,见requirements.txt)
安装步骤
1. 获取项目代码
bash
# 克隆仓库 |
2. 安装依赖
bash
pip install -r requirements.txt |
数据库配置
-
确保 MySQL 服务已启动,且
employees数据库存在。 -
修改
config.py
配置文件,适配你的数据库环境:
python
# config.py
db_config = {
"host": "localhost", # 数据库地址(默认 localhost)
"port": 3306, # 端口(默认 3306)
"user": "root", # 数据库用户名
"password": "123456", # 替换为你的数据库密码
"database": "employees", # 数据库名(固定为 employees)
"autocommit": True
}
使用指南
基本语法
在终端中执行以下命令,根据查询类型传递参数:
bash
python main.py <查询类型> <查询值> |
三种查询模式示例
1. 按姓名查询
bash
# 查询名为 "Gor" 的员工 |
2. 按部门查询
-
若部门名称含空格(如
Customer Service
),需用引号包裹:
bash
# 查询部门为 "Customer Service" 的员工
python main.py dept "Customer Service" -
部门名称无空格时直接传递:
bash
# 查询部门为 "Sales" 的员工
python main.py dept Sales
3. 按最低工资查询
bash
# 查询薪资不低于 100000 的员工 |
输出说明
-
若存在匹配结果,将显示:
plaintext
查询结果:
(10001, 'Gor', 'Smith', 'd001', 'Marketing', 'Senior Engineer', 120000)
(10005, 'Gor', 'Williams', 'd003', 'Human Resources', 'Staff', 110000) -
若无匹配记录,将提示:
plaintext
没有找到匹配的记录。
项目结构
plaintext
querySQL/ |
注意事项
-
参数传递
:
- 部门名称含空格时,必须用双引号
"或单引号'包裹(如python main.py dept "Research and Development"),否则会被识别为多个参数。 - 薪资参数必须是整数(如
100000),输入非数字会提示错误。
- 部门名称含空格时,必须用双引号
-
查询条件
:
- 所有查询默认只返回 在职员工(
to_date='9999-01-01'),如需调整,可修改query.py中的 SQL 语句。 - 姓名和部门名称匹配对大小写敏感(与数据库存储一致)。
- 所有查询默认只返回 在职员工(
-
数据依赖
:
- 确保
employees数据库中已创建关联表(employees、dept_emp、titles、salaries、departments),且表结构包含必要字段(如emp_no、dept_name、salary等)。
- 确保
许可证
MIT
允许自由使用、修改和分发,需保留原作者信息。
联系方式
- 作者:王沁桐
- 邮箱:3636617336@qq.com
三、项目总结与分析
1. 设计亮点
- 模块化结构:将配置(
config.py)、连接(db_connection.py)、查询(query.py)、展示(result_display.py)分离,符合 “单一职责原则”,便于维护和扩展。 - 安全防护:所有 SQL 查询使用参数化查询(
%s占位符),避免 SQL 注入风险;自动关闭数据库连接(finally块),防止资源泄漏。 - 用户友好:提供清晰的命令行帮助信息,对无效参数(如非数字薪资)进行校验并提示错误,降低使用门槛。
2. 可优化方向
- 配置安全:当前
config.py中密码明文存储,建议通过环境变量(os.getenv("DB_PASSWORD"))或配置文件加密提升安全性。 - 查询性能:添加查询缓存(如
redis)减少重复查询对数据库的压力;对 SQL 语句添加索引优化(如employees(first_name)、salaries(salary))。 - 功能扩展:支持模糊查询(如按姓名前缀匹配)、多条件组合查询(如 “部门 + 最低工资”),提升灵活性。
3. 适用场景
该系统适用于中小型企业的员工信息快速查询,或作为大型 HR 系统的轻量查询模块嵌入使用。通过简单修改query.py中的 SQL 语句,可适配不同的数据库表结构和查询需求。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 好的好的378的博客!
评论
