Armbian环境中使用python生成一个网页

要创建一个数据库来存储温度信息,并通过Web页面图形化展示这些信息,可以使用以下步骤。我们将使用SQLite作为数据库,Flask作为Web框架,和Chart.js来图形化展示数据。

步骤一:设置Python环境
安装Python(如果尚未安装):

sudo apt update
sudo apt install python3 python3-pip

安装所需的Python库:

pip3 install flask sqlite3 pandas

注意:这种方法安装库时,可能会遇到错误,当前的Python环境是外部管理的。这意味着不能直接使用 pip3 在系统范围内安装Python包。
有几种方法可以解决此问题

方法一:使用虚拟环境
1.安装 python3-venv(如果尚未安装):
sudo apt install python3-venv
2.创建虚拟环境:
python3 -m venv myenv
3.激活虚拟环境:
source myenv/bin/activate
4.在虚拟环境中安装所需的Python包:
pip install flask pandas
5.运行你的Python脚本: 在虚拟环境中运行你的Python脚本:
python app.py
6.退出虚拟环境: 在终端中运行以下命令:
deactivate
7.进入虚拟环境: 导航到包含虚拟环境的目录,然后运行以下命令激活虚拟环境:
source myenv/bin/activate
在Python中,虚拟环境本质上是一个包含特定Python解释器和相关包的目录。要卸载虚拟环境,只需删除该目录即可。以下是具体步骤:
deactivate
rm -rf myenv

方法二:使用 pipx
1.安装 pipx(如果尚未安装):
sudo apt install pipx
2.确保 pipx 的路径已添加到你的环境变量中:
pipx ensurepath
3.使用 pipx 安装所需的Python包:
pipx install flask
pipx install pandas

方法三:使用 apt 安装系统包
1.使用 apt 安装系统包:
sudo apt install python3-flask python3-pandas

步骤二:创建SQLite数据库
创建数据库文件: 创建一个名为 temperature.db 的SQLite数据库文件,并创建一个表来存储温度信息。

import sqlite3

conn = sqlite3.connect('temperature.db')
c = conn.cursor()
c.execute('''
    CREATE TABLE IF NOT EXISTS temperature (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
        value REAL
    )
''')
conn.commit()
conn.close()

步骤三:创建Flask应用
创建Flask应用: 创建一个名为 app.py 的文件,并添加以下代码:

from flask import Flask, request, render_template, jsonify
import sqlite3
import pandas as pd

app = Flask(__name__)

def get_db_connection():
    conn = sqlite3.connect('temperature.db')
    conn.row_factory = sqlite3.Row
    return conn

@app.route('/')
def index():
    conn = get_db_connection()
    data = conn.execute('SELECT * FROM temperature').fetchall()
    conn.close()
    return render_template('index.html', data=data)

@app.route('/add', methods=['POST'])
def add_temperature():
    value = request.form['value']
    conn = get_db_connection()
    conn.execute('INSERT INTO temperature (value) VALUES (?)', (value,))
    conn.commit()
    conn.close()
    return jsonify({'status': 'success'})

@app.route('/data')
def data():
    conn = get_db_connection()
    df = pd.read_sql_query('SELECT * FROM temperature', conn)
    conn.close()
    return df.to_json(orient='records')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

步骤四:创建HTML模板
创建HTML模板: 创建一个名为 templates/index.html 的文件,并添加以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Temperature Data</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
    <h1>Temperature Data</h1>
    <form id="temperature-form">
        <input type="number" step="0.1" name="value" placeholder="Enter temperature" required>
        <button type="submit">Add Temperature</button>
    </form>
    <canvas id="temperature-chart" width="400" height="200"></canvas>
    <script>
        document.getElementById('temperature-form').addEventListener('submit', function(event) {
            event.preventDefault();
            const formData = new FormData(event.target);
            fetch('/add', {
                method: 'POST',
                body: formData
            }).then(response => response.json()).then(data => {
                if (data.status === 'success') {
                    loadChartData();
                }
            });
        });

        function loadChartData() {
            fetch('/data')
                .then(response => response.json())
                .then(data => {
                    const ctx = document.getElementById('temperature-chart').getContext('2d');
                    const chartData = {
                        labels: data.map(row => row.timestamp),
                        datasets: [{
                            label: 'Temperature',
                            data: data.map(row => row.value),
                            borderColor: 'rgba(75, 192, 192, 1)',
                            borderWidth: 1,
                            fill: false
                        }]
                    };
                    new Chart(ctx, {
                        type: 'line',
                        data: chartData,
                        options: {
                            scales: {
                                x: {
                                    type: 'time',
                                    time: {
                                        unit: 'minute'
                                    }
                                }
                            }
                        }
                    });
                });
        }

        loadChartData();
    </script>
</body>
</html>

步骤五:运行Flask应用
运行Flask应用: 在终端中运行以下命令启动Flask应用:

python3 app.py

访问Web页面: 打开浏览器并访问 http://localhost:5000,你将看到一个表单用于输入温度数据,以及一个图表展示存储的温度数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值