统计出所有项目的信息字段和每个项目参与人员的参与项目的工作量,并实现一个报表
时间: 2024-02-17 11:03:25 浏览: 20
好的,针对您的需求,我们需要对所有项目进行遍历,并统计出每个项目的信息字段和参与人员的工作量,最终生成一个报表。
以下是示例代码,可以实现您所需的功能:
```python
import pymysql
# 定义数据库连接信息
db_config = {
'host': 'localhost',
'port': 3306,
'user': 'root',
'password': 'password',
'database': 'test',
'charset': 'utf8mb4',
}
# 定义查询语句
project_info_sql = "SELECT id, name, description, start_time, end_time FROM project"
project_member_sql = "SELECT project_id, user_id, workload FROM project_member WHERE project_id IN %s"
def generate_report():
# 建立数据库连接
conn = pymysql.connect(**db_config)
cursor = conn.cursor()
# 查询所有项目信息
cursor.execute(project_info_sql)
project_data = cursor.fetchall()
# 查询所有项目的参与人员工作量
project_ids = tuple([p[0] for p in project_data])
cursor.execute(project_member_sql, (project_ids,))
member_data = cursor.fetchall()
# 关闭数据库连接
cursor.close()
conn.close()
# 组装项目信息和参与人员工作量
report_data = []
for project in project_data:
# 统计参与人员的工作量
members = {}
for member in member_data:
if member[0] == project[0]:
members[member[1]] = member[2]
# 组装项目信息和参与人员工作量
project_info = {
'id': project[0],
'name': project[1],
'description': project[2],
'start_time': project[3],
'end_time': project[4],
'members': members,
}
report_data.append(project_info)
# 生成报表
for project in report_data:
print("项目名称:", project['name'])
print("项目描述:", project['description'])
print("开始时间:", project['start_time'])
print("结束时间:", project['end_time'])
print("参与人员工作量:")
for member, workload in project['members'].items():
print(member, workload)
print("------------------------------")
```
以上代码中,我们首先查询了所有项目的信息,并查询了所有项目的参与人员工作量。然后我们遍历所有项目,统计出每个项目的参与人员工作量,并组装成一个数据结构。最后,我们遍历组装好的数据结构,生成报表。
需要注意的是,生成报表时,我们可以使用Python的格式化字符串或模板引擎来输出报表,以便更好的控制输出格式。此外,为了确保代码的安全性和可靠性,我们还需要进行异常处理、输入验证等相关操作。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)