提高生产力,让GPT帮你写代码【系列一】
一、需求
需求开发-Bug统计及分析平台
技术栈:Python
数据库:Mysql
前端图表:Matplotlib
逻辑实现:通过SQL在Jira数据库查询开发人员Bug数据,然后通过图表展示
开发环境:本地win 10 进行开发
需要实际代码,能够在浏览器打开展示图表。
二、如何安装 Flask
-
确保您已经安装了Python。Flask是一个基于Python的Web框架,因此您需要先安装Python才能使用Flask。您可以从Python官方网站(https://www.python.org/downloads/)下载并安装适合您操作系统的Python版本。
-
打开命令行界面(例如Windows的命令提示符或macOS/Linux的终端)。
-
在命令行界面中,输入以下命令来安装Flask:
- 如果您的系统中同时安装了Python 2和Python 3,请使用pip3来代替pip:
- 配置环境变量,要到<C:\Python27\Scripts>
1 pip install flask 2 OR 3 pip3 install flask
这将使用pip包管理器下载并安装Flask及其依赖项。
- 安装完成后,您可以编写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) 编辑 收藏 举报