提高生产力,让GPT帮你写代码【系列一】

一、需求

需求开发-Bug统计及分析平台
技术栈:Python
数据库:Mysql
前端图表:Matplotlib
逻辑实现:通过SQL在Jira数据库查询开发人员Bug数据,然后通过图表展示
开发环境:本地win 10 进行开发
需要实际代码,能够在浏览器打开展示图表。

二、如何安装 Flask

  1. 确保您已经安装了Python。Flask是一个基于Python的Web框架,因此您需要先安装Python才能使用Flask。您可以从Python官方网站(https://www.python.org/downloads/)下载并安装适合您操作系统的Python版本。

  2. 打开命令行界面(例如Windows的命令提示符或macOS/Linux的终端)。

  3. 在命令行界面中,输入以下命令来安装Flask:

  4. 如果您的系统中同时安装了Python 2和Python 3,请使用pip3来代替pip:
  5. 配置环境变量,要到<C:\Python27\Scripts>
1 pip install flask
2 OR
3 pip3 install flask

这将使用pip包管理器下载并安装Flask及其依赖项。

  1. 安装完成后,您可以编写Flask应用程序并运行它。

为了验证Flask是否成功安装,您可以创建一个简单的Flask应用程序。在命令行界面中,使用文本编辑器创建一个名为app.py的Python文件,并将以下代码复制到app.py文件中:

 
 1 from flask import Flask
 2 
 3 app = Flask(__name__)
 4 
 5 @app.route('/')
 6 def hello():
 7     return 'Hello, Flask!'
 8 
 9 if __name__ == '__main__':
10     app.run()

保存并关闭文件。然后在命令行界面中,导航到包含app.py文件的目录,并运行以下命令来启动Flask应用程序:

或者如果您的系统中同时安装了Python 2和Python 3,请使用以下命令:

1 python app.py
2 OR
3 python3 app.py

您应该会看到类似以下的输出:

1  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

这表示Flask应用程序正在本地主机的端口5000上运行。您可以在浏览器中访问http://127.0.0.1:5000/http://localhost:5000/,并应该看到显示"Hello, Flask!"的页面。

这样,您就成功安装并运行了Flask!现在您可以开始使用Flask来构建更复杂的Web应用程序。

验证:

 

 三、完整的Bug统计及分析平台的代码示例,使用Python、MySQL和Flask框架来实现,并通过浏览器打开展示图表:

1、安装必要的库:

  • 在命令行中运行以下命令来安装所需的Python库:【已安装 Flask 可以忽略】
1 pip3 install mysql-connector-python flask matplotlib

2、创建app.py文件并添加以下代码:

 1 # -*- coding: utf-8 -*-
 2 import mysql.connector
 3 from flask import Flask, render_template
 4 import matplotlib.pyplot as plt
 5 from io import BytesIO
 6 import base64
 7 
 8 plt.rcParams['font.family'] = 'sans-serif'
 9 plt.rcParams['font.sans-serif'] = ['SimSun', 'Arial', 'Microsoft YaHei', 'Heiti TC', 'STXihei', 'STHeiti']
10 
11 
12 app = Flask(__name__)
13 
14 @app.route('/')
15 def index():
16     # 连接到MySQL数据库
17     db = mysql.connector.connect(
18         host="localhost",
19         user="root",
20         password="123456",
21         database="jiradb"
22     )
23 
24     # 创建游标对象
25     cursor = db.cursor()
26 
27     # # 从本地文件读取查询语句
28     # with open('sql/1.sql', 'r') as file:
29     #     query = file.read()
30 
31     # 执行SQL查询
32     query = "SELECT  cwd_user.`first_name` 开发人员,  COUNT(cwd_user.`first_name`) Bug数 FROM  jiraissue,  `app_user`,  `cwd_user`WHERE app_user.`lower_user_name` = cwd_user.`user_name`  AND app_user.`user_key` = jiraissue.`ASSIGNEE`  AND jiraissue.project IN ('10101','10102')    AND jiraissue.`issuetype` = '10003'  AND jiraissue.`issuestatus` IN('10111', '6', '3')  AND jiraissue.CREATED >= '2022-10-1 00:00:00'   AND jiraissue.CREATED < '2022-10-31 00:00:00'   AND cwd_user.`first_name`  NOT IN ('刘晓敏','臧亚亚','曹燕楠','李怡婷','李东坡','邓飞','黄晓峰','江欣凝','')   GROUP BY cwd_user.`first_name` ORDER BY COUNT(cwd_user.`first_name`) DESC;"
33     cursor.execute(query)
34 
35     # 检索查询结果
36     results = cursor.fetchall()
37 
38     # 提取开发人员和Bug计数
39     developers = [result[0] for result in results]
40     bug_counts = [result[1] for result in results]
41 
42     # 生成柱状图
43     plt.bar(developers, bug_counts)
44     plt.xlabel("Developers")
45     plt.ylabel("Bug Count")
46     plt.title("Bug Count by Developer")
47 
48     # 保存图表为字节流
49     image_stream = BytesIO()
50     plt.savefig(image_stream, format='png')
51     image_stream.seek(0)
52     encoded_image = base64.b64encode(image_stream.getvalue()).decode('utf-8')
53 
54     # 关闭数据库连接
55     cursor.close()
56     db.close()
57 
58     # 渲染模板并传递图表数据
59     return render_template('index.html', chart_image=encoded_image)
60 
61 if __name__ == '__main__':
62     app.run()

 

PS:确保在与app.py文件相同的目录中放置query.sql文件,并将其中的SQL查询语句进行适当编辑。

3、创建index.html模板文件,并添加以下代码:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title>Bug统计图表</title>
 5 </head>
 6 <body>
 7     <h1>Bug统计图表</h1>
 8     <img src="data:image/png;base64,{{ chart_image }}" alt="Bug统计图表">
 9 </body>
10 </html>

4、在同级目录下创建一个名为templates的文件夹,并将index.html模板文件放入其中。

5、运行应用程序:

  • 在命令行中,导航到存储了app.py文件的目录。
  • 运行以下命令来启动Flask应用程序:
python app.py

这样,您就可以在浏览器中打开并展示Bug统计图表了。请确保您已正确安装了MySQL和Flask,并根据实际情况配置数据库连接信息。

希望这个示例对您有帮助!如果您有任何进一步的问题,请随时提问。

 

遇到小问题:

1、问题:VSC无法编译mysql-connector,报错。

解决:Ctrl+Shift+P,输入“Python: Select Interpreter”,选择本地Python版本及环境,并等待VSC完成设置。

2、问题:提示“SyntaxError: Non-ASCII character '\xe8' in file d:/004 GPT code/app.py on line 11, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details”

解决:在您的 app.py 文件的开头添加以下注释行,用于声明文件的编码方式。例如,如果您使用的是UTF-8编码,可以添加以下注释行:< # -*- coding: utf-8 -*-  >

3、问题:【File "C:\Python27\lib\site-packages\mysql\connector\__init__.py", line 32, in <module>

from .connection_cext import CMySQLConnection
File "C:\Python27\lib\site-packages\mysql\connector\connection_cext.py", line 86
f"MySQL Connector/Python C Extension not available ({exc})"
^
SyntaxError: invalid syntax 】

解决:看起来您正在使用Python 2.7版本,而mysql.connector库的某些部分可能不支持该版本。mysql.connector库通常用于Python 3.x版本。

 4、问题:图表显示乱码,需要能够显示中文

解决:

1)创建一个名为 matplotlibrc 的 txt文本文件,并将其保存在您的项目目录下(与app.py文件相同的目录)。

2)在 matplotlibrc 文件中添加以下内容:

font.family:  sans-serif
font.sans-serif:  SimSun, Arial, Microsoft YaHei, Heiti TC, STXihei, STHeiti

上述设置指定了一系列中文字体,按照指定的顺序尝试加载字体,直到找到可用的字体。

3)保存 matplotlibrc 文件。

4)在 app.py 的开头添加以下代码,将 matplotlibrc 配置文件路径设置为默认配置:

1 import matplotlib.pyplot as plt
2 plt.rcParams['font.family'] = 'sans-serif'
3 plt.rcParams['font.sans-serif'] = ['SimSun', 'Arial', 'Microsoft YaHei', 'Heiti TC', 'STXihei', 'STHeiti']

这将确保Matplotlib在绘制图表时使用指定的中文字体。

 

posted on 2023-07-18 15:29  SH-xuliang  阅读(290)  评论(0编辑  收藏  举报

导航