grafana mysql count_Grafana配置mysql展示自定义分组柱状图(Mac)

本教程详细介绍了如何在Mac环境下安装Grafana并配置连接本地MySQL数据库。通过修改grafana.ini配置文件,设置数据库连接参数,然后重启服务。接着,创建一个新的Graph,利用SQL查询构建不按时间序列排列的柱状图。展示了两种SQL查询方法,以成绩范围为分组标准,统计各分数段人数。在Grafana中设置系列类型为按系列分组,调整Y轴表示值的聚合方式,成功实现了自定义分组柱状图的展示。
摘要由CSDN通过智能技术生成

安装Grafana

安装使用环境为MAC,使用工具安装:

brew update

brew install grafana

配置Grafana连接本地安装的mysql,mysql安装不做说明,配置文件列表如下:

配置文件应该位于/usr/local/etc/grafana/grafana.ini

日志文件应该位于/usr/local/var/log/grafana/grafana.log

如果你想手动安装一个插件放在这里:/usr/local/var/lib/grafana/plugins

默认的sqlite数据库位于 /usr/local/var/lib/grafana

其中,编辑grafana.ini文件连接数据库,重点配置数据库的连接类型,账号,密码,数据库名(切记数据库建立对应的数据库)

nmEZvu.png

重启Grafana服务

brew tap homebrew/services

brew services start grafana

此时网页访问localhost:3000即为Grafana配置数据源页面(默认账号密码:admin / admin)

ERnUJz.png

配置mysql数据源

连接测试后保存,这样在图表展示数据

以下是一个简单的示例代码,使用Python和Django构建Web数据库系统,数据库使用MySQL,并实现数据筛选、展示和图表分析,包括柱状图和雷达图。 1. 安装Django和MySQL驱动 ``` pip install django pip install mysqlclient ``` 2. 创建Django项目和应用 ``` django-admin startproject webdb cd webdb python manage.py startapp myapp ``` 3. 配置数据库 在`webdb/settings.py`文件中,将以下内容替换为你的MySQL数据库配置: ``` DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '3306', } } ``` 4. 创建模型 在`myapp/models.py`文件中,定义一个简单的模型: ``` from django.db import models class MyModel(models.Model): name = models.CharField(max_length=50) age = models.IntegerField() gender = models.CharField(max_length=10) def __str__(self): return self.name ``` 5. 迁移数据库 在终端中执行以下命令,创建表格: ``` python manage.py makemigrations python manage.py migrate ``` 6. 创建视图 在`myapp/views.py`文件中,定义数据筛选、展示和图表分析的视图: ``` from django.shortcuts import render from django.db.models import Count from .models import MyModel def mymodel_list(request): mymodels = MyModel.objects.all() return render(request, 'myapp/mymodel_list.html', {'mymodels': mymodels}) def mymodel_filter(request): if request.method == "POST": gender = request.POST.get('gender') mymodels = MyModel.objects.filter(gender=gender) return render(request, 'myapp/mymodel_list.html', {'mymodels': mymodels}) else: return render(request, 'myapp/mymodel_filter.html') def mymodel_chart(request): data = MyModel.objects.values('gender').annotate(count=Count('gender')) labels = [item['gender'] for item in data] values = [item['count'] for item in data] return render(request, 'myapp/mymodel_chart.html', {'labels': labels, 'values': values}) ``` 7. 创建模板 在`myapp/templates/myapp`目录下,创建以下模板文件: `mymodel_list.html`: ``` {% extends 'base.html' %} {% block content %} <h1>My Models</h1> <table> <thead> <tr> <th>Name</th> <th>Age</th> <th>Gender</th> </tr> </thead> <tbody> {% for mymodel in mymodels %} <tr> <td>{{ mymodel.name }}</td> <td>{{ mymodel.age }}</td> <td>{{ mymodel.gender }}</td> </tr> {% endfor %} </tbody> </table> {% endblock %} ``` `mymodel_filter.html`: ``` {% extends 'base.html' %} {% block content %} <h1>Filter My Models</h1> <form method="post"> {% csrf_token %} <label for="gender">Gender:</label> <select id="gender" name="gender"> <option value="male">Male</option> <option value="female">Female</option> </select> <button type="submit">Filter</button> </form> {% endblock %} ``` `mymodel_chart.html`: ``` {% extends 'base.html' %} {% block content %} <h1>My Model Chart</h1> <canvas id="myChart"></canvas> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <script> var ctx = document.getElementById('myChart').getContext('2d'); var myChart = new Chart(ctx, { type: 'bar', data: { labels: {{ labels|safe }}, datasets: [{ label: 'Count', data: {{ values|safe }}, backgroundColor: [ 'rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', ], borderColor: [ 'rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', ], borderWidth: 1 }] } }); </script> {% endblock %} ``` `base.html`: ``` <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Web Database System</title> </head> <body> <div> <a href="{% url 'mymodel_list' %}">My Models</a> | <a href="{% url 'mymodel_filter' %}">Filter</a> | <a href="{% url 'mymodel_chart' %}">Chart</a> </div> <hr> {% block content %} {% endblock %} </body> </html> ``` 8. 配置URL路由 在`myapp/urls.py`文件中,定义URL路由: ``` from django.urls import path from .views import mymodel_list, mymodel_filter, mymodel_chart urlpatterns = [ path('', mymodel_list, name='mymodel_list'), path('filter/', mymodel_filter, name='mymodel_filter'), path('chart/', mymodel_chart, name='mymodel_chart'), ] ``` 在`webdb/urls.py`文件中,将应用URL路由和Django默认URL路由合并: ``` from django.contrib import admin from django.urls import include, path urlpatterns = [ path('', include('myapp.urls')), path('admin/', admin.site.urls), ] ``` 9. 运行测试 在终端中执行以下命令,启动Django开发服务器: ``` python manage.py runserver ``` 在浏览器中访问`http://localhost:8000/`,即可看到Web数据库系统界面,可以进行数据筛选、展示和图表分析操作。在筛选页面中选择性别,即可展示对应性别的数据;在图表页面中展示了性别统计的柱状图和雷达图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值