Flask influxdb 项目架构搭建
时间: 2023-09-03 18:05:52 浏览: 182
Flask是一个轻量级的Python web框架,InfluxDB是一个时间序列数据库。它们可以被结合使用来创建一个高效的数据采集和可视化的web应用程序。
下面是一个简单的Flask InfluxDB项目架构搭建:
1. 安装Flask和InfluxDB Python客户端
```bash
pip install Flask
pip install influxdb
```
2. 创建Flask应用程序
```python
from flask import Flask, jsonify, request
from influxdb import InfluxDBClient
app = Flask(__name__)
# 连接InfluxDB
client = InfluxDBClient(host='localhost', port=8086)
@app.route('/api/data', methods=['POST'])
def post_data():
# 从请求体中获取数据
data = request.get_json()
# 将数据写入到InfluxDB中
client.write_points(data)
return jsonify({'success': True})
if __name__ == '__main__':
app.run(debug=True)
```
3. 创建前端页面
在templates文件夹中创建一个index.html文件,用于展示数据。
```html
<!DOCTYPE html>
<html>
<head>
<title>Flask InfluxDB Project</title>
</head>
<body>
<h1>Flask InfluxDB Project</h1>
<table>
<thead>
<tr>
<th>时间戳</th>
<th>数值</th>
</tr>
</thead>
<tbody>
{% for point in points %}
<tr>
<td>{{ point.time }}</td>
<td>{{ point.value }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<script>
fetch('/api/data')
.then(response => response.json())
.then(data => {
const tbody = document.querySelector('tbody');
data.forEach(point => {
const tr = document.createElement('tr');
const td1 = document.createElement('td');
td1.innerText = point.time;
const td2 = document.createElement('td');
td2.innerText = point.value;
tr.appendChild(td1);
tr.appendChild(td2);
tbody.appendChild(tr);
});
});
</script>
</body>
</html>
```
4. 编写Flask路由
```python
@app.route('/')
def index():
# 从InfluxDB中读取数据
result = client.query('SELECT * FROM "measurement"')
points = []
for point in result.get_points():
points.append({'time': point['time'], 'value': point['value']})
return render_template('index.html', points=points)
```
5. 运行Flask应用程序
```bash
python app.py
```
打开浏览器,访问http://localhost:5000,您应该能够看到一个表格,其中包含从InfluxDB获取的数据。
阅读全文