python flask p5.js mysql 实现数据库查询并网页显示数据(后附完整代码分享)

news2025/2/27 4:51:53

tips:不涉及session,是纯简单数据共享

实现步骤:

    • 第一步:搭建框架
    • 第二步:创建数据库
    • 第三步:设计前端网页
    • 第四步:后端实现存储数据库
    • 整体实现需要的代码文件:

第一步:搭建框架

首先flask比较灵活建议先搭架子
请添加图片描述
蓝图存放具体后端功能实现,你可以认为是flask的孩子
可以把相关的功能模块规整为同一个主题

⚠️新建的时候不是文件夹!!是python package,名自定义,为了明白是蓝图命名为blueprint
请添加图片描述

static存放css、js、img等文件

templates存放自己的html文件

app.py相当于汇总,做基础绑定

config放的是配置信息,比如数据库
请添加图片描述

exts放的是扩展的插件,比如SQLAlchemy,同时这个文件的意义就在于可以解决解决循环引用的问题
请添加图片描述
models放的是数据库这一个表的具体模型,比如你的用户表
请添加图片描述

第二步:创建数据库

官方下载链接https://dev.mysql.com/downloads/mysql/
一定要注意下载和自己mac版相一致的

然后用Navicat进行管理
请添加图片描述
然后填完信息点一下Test Connection测试一下
这个密码是你当时安装输过的,如果没改过就是root
忘了也没有关系可以重置密码的
请添加图片描述
新建好就不用手动创建表啦
使用Flask数据库迁移三部曲
使用前要牢记在app那边进行好绑定
打开pycharm的终端

请添加图片描述
依次输入三条命令:

flask db init 
flask db migrate
flask db upgrade

然后刷新你的数据库请添加图片描述
user表是主要的,另外那个表是迁移带的,告知的是版本号

第三步:设计前端网页

框架用的Bootstrap的组件这边我直接贴代码:
index.html:
网页访问地址:http://127.0.0.1:5000/auth/login
密码是加密了,不是直接明文存放在数据库中的
请添加图片描述

![请添加图片描述](https://img-blog.csdnimg.cn/7ab90ab4ad2342d39e740a51ba2586f6.png

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      width="device-width,"
      initial-scale="1.0,"
      maximum-scale="1.0,"
      user-scalable="0"
    />
    <title>表单</title>
    <link rel="stylesheet" href="{{ url_for('static',filename = 'css/circle.css') }}">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
    </head>
  <body>
     <form  method="POST" >
        <div class="form-group">
            <label for="exampleInputEmail1" >User name </label>
            <input type="text" placeholder="请输入长度为5的用户名" name = "username" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" >
        </div>
        <div class="form-group">
            <label for="exampleInputPassword1">Password</label>
            <input type="password" name="password" class="form-control" id="exampleInputPassword1">
            <small id="emailHelp" class="form-text text-muted">We'll never share your password with anyone else.</small>
        </div>
         <div class="form-group">
            <label for="exampleInputPassword1">Age</label>
            <input type="text" name="age" class="form-control" id="exampleInputPassword1">
        </div>
            <button type="submit" class="btn btn-primary btn-block">Submit</button>
        </form>
  </body>
</html>

result.html:
请添加图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
    <title>结果</title>
    <script  src="{{ url_for('static',filename = 'js/p5.js') }}"></script>
    <script  src="{{ url_for('static',filename = 'js/circle.js') }}"></script>
    <link rel="stylesheet" href="{{ url_for('static',filename = 'css/circle.css') }}">
</head>
<body>
     <table class="table">
         <thead class="thead-light">
            <tr>
               <th scope="col">Id</th>
               <th scope="col">Name</th>
               <th scope="col">Age</th>
            </tr>
         </thead>

         <tbody>
            {% for student in people %}
               <tr>
                  <td>{{ student.id }}</td>
                  <td>{{ student.username }}</td>
                  <td>{{ student.age }}</td>
               </tr>
            {% endfor %}
         </tbody>
      </table>
    </body>
</html>

第四步:后端实现存储数据库

auth.py:

from flask import Blueprint, render_template, request, redirect, url_for
from werkzeug.security import generate_password_hash
from wtforms import form
from exts import db
from models import User
from .froms import loginForm

bp = Blueprint("auth", __name__, url_prefix="/auth")

@bp.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        return render_template('index.html')
    else:
        username = request.form.get('username')
        password = request.form.get('password')
        age = request.form.get('age')
        print("username", username)
        user = User(username=username, password=generate_password_hash(password), age=age)
        db.session.add(user)
        db.session.commit()
        return redirect(url_for("auth.result"))


@bp.route('/result', methods=['GET', 'POST'])
def result():  # put application's code here
    people = User.query.all()
    print(people)
    return render_template('result.html', people=people)

其中最关键的是:

user = User(username=username, password=generate_password_hash(password), age=age)
        db.session.add(user)
        db.session.commit()

实现了数据的存储到数据库

然后查询数据库的所有内容转发到新的页面

people = User.query.all()
    print(people)
    return render_template('result.html', people=people)

数据库的存放情况:

请添加图片描述

整体实现需要的代码文件:

1、auth.py(上面有)
2、circle.css:

html, body {
  margin: 20px;
  padding: 4px;

}
canvas {
    display: block;
    margin: auto;
    width: 40%;
    /*border: 3px solid #73AD21;*/
}

3、circle.js:

let angles = [30, 10, 45, 35, 60, 38, 75, 67];

function setup() {
  createCanvas(720, 400);
  noStroke();
  noLoop(); // 执行一次之后停止
}

function draw() {
  background(100);
  pieChart(300, angles);
}

function pieChart(diameter, data) {
  let lastAngle = 0;
  for (let i = 0; i < data.length; i++) {
    let gray = map(i, 0, data.length, 0, 255);
    fill(gray);
    arc(
      width / 2,
      height / 2,
      diameter,
      diameter,
      lastAngle,
      lastAngle + radians(angles[i])
    );
    lastAngle += radians(angles[i]);
  }
}

4、p5.js下载地址:下载程序库里面有

5、index.html(上面有)
6、result.html(上面有)
7、config.py

HOSTNAME = '127.0.0.1'
PORT     = '3306'
DATABASE = 'student'
USERNAME = 'root'
PASSWORD = 'root'
DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)
SQLALCHEMY_DATABASE_URI = DB_URI

8、models.py

from exts import db


class User(db.Model):
    __tablename__ = "user"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(100))
    password = db.Column(db.String(400))
    age = db.Column(db.Integer())

    def __repr__(self):
        return f'<User {self.id}>'

9、exts.py

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/567686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity-vr用眼睛注视选择物体

Unity-vr用眼睛注视选择物体 文章目录 Unity-vr用眼睛注视选择物体工程版本用法说明脚本说明WatchController - 注视主控制器WatchEvent - 注视事件WatchGameobject - 被注视物体TimerTool - 计时器工具 总结 工程版本 unity2019.4.9f1 vs2019 项目工程源代码下载 用法说明 …

Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated May 2023)

Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated May 2023) Windows 11, version 22H2 官方原版&#xff0c;2023 年 5 月 更新 请访问原文链接&#xff1a;https://sysin.org/blog/windows-11/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作…

《计算之魂》引子

了解计算机基本原理的读者朋友可以跳过这个引子直接阅读第 1 章&#xff0c;因为本书其他章节并不依赖本章内容。不过&#xff0c;如果你愿意花上半小时读一读这一部分&#xff0c;相信会从数学和哲学层面对计算机以及计算的本质有更深刻的理解。 0.1 什么是计算机 如果你有…

混合属性mix-blend-mode不生效

下面的ABCDE是混合图层&#xff0c;box是他们的父级&#xff0c;一般浏览器支持都没什问题需要注意的是&#xff0c;确保父元素不是透明的&#xff0c; 我使用的时候发现给父元素rgba设置透明度这种方式没啥作用&#xff0c;还得是纯色&#xff0c;没去深究&#xff0c;设置纯色…

集成gtest进行单元测试之cmake应用

编写代码有bug是很正常的&#xff0c;通过编写完备的单元测试&#xff0c;可以及时发现问题&#xff0c;并且在后续的代码改进中持续观测是否引入了新的bug。对于追求质量的程序员&#xff0c;为自己的代码编写全面的单元测试是必备的基础技能&#xff0c;在编写单元测试的时候…

二、CNNs网络架构-卷积分离网络架构

《A review of convolutional neural network architectures and their optimizations》论文指出AlexNet的优异性能证明了可以通过增加网络深度提高网络性能。随着网络层数的不断增加&#xff0c;不断增加的计算负担和不显著的性能提升使得更先进的网络架构成为另一个主要的研究…

如何在华为OD机试中获得满分?Java实现【字符串分隔】一文详解!

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: Java华为OD机试真题&#xff08;2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

uniapp沉浸式渐变状态栏

插件地址&#xff1a;沉浸式渐变状态栏 - DCloud 插件市场 标准用法 <v-headerview actionBarColor"#fac90f" titleColor"#ffffff" pageTitle这是标题 ><template v-slot:title><!--如需自定义标题&#xff0c;用这个slot自定义内容。否则…

基于postman测试接口(整套接口测试)

可以解决的问题 几百个接口人工测试接口过于繁杂大多测试无法使用请求结果当参数可以使用随机参数支持swagger信息导入随账号持久化保存数据对集合一键测试自定义可视化结果 开启控制台 单个测试尝试 使用请求结果当参数 pm.test("存全局参数", function () {// 获…

【深度学习】基于Python Qt的口罩检测与报警系统

文章目录 yolov7训练系统集成数据库报警记录查看qt页面跳转方式qt 的数据库某表查看页面如何写q742971636 yolov7训练 yolov7:https://github.com/WongKinYiu/yolov7 人脸口罩数据集&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1bnxJPnoRNwUfVzLxKjIvkQ?pwdc0yc …

Confluence的数据迁移备份与恢复

目录 一、简介 二、数据备份&#xff08;默认系统会自动备份&#xff0c;不需要手动&#xff09; 2、点击左上角的设置按钮&#xff0c;选择“一般配置”选项。 3、选择“备份与还原”选项 4、开始手动备份 三、数据恢复 1、使用管理员账号登录 2、选择“备份与还原”选…

亿发管理信息化系统,助力五金加工企业信息化建设

传统生产模式下劳动密集的五金生产车间&#xff0c;管理难度逐渐增大&#xff0c;五进生产加工商需要寻求新的竞争力。信息化建设可以将信息技术和系统融入五金生产加工过程的各个环节&#xff0c;使五金生产行业受益。 1、定制生产 信息化建设使五金管理者能够高效地实施定制…

laravel 图表Apexchart 整数多出小数点

Apexchart做统计界面发现一个问题&#xff0c;数据全是整数&#xff0c;但是还显示小数点&#xff0c;如下图&#xff1a; 网上很少有答案&#xff0c;自己研究了很久&#xff0c;分享下经验 第一种方案重新buildDefaultScript方法 protected function buildDefaultScript(){$…

R语言实践——rWCVP 的函数清单

rWCVP 的函数清单 1. get_area_name()用法参数值详介例子 2. get_wgsrpd3_codes()用法参数值详介例子 3. powo_map()用法参数值 4. powo_pal(), scale_color_powo(), scale_colour_powo(), scale_fill_powo()用法参数值 5. redlist_example用法格式资源 6. taxonomic_mapping用…

【万字长文】深度解析 Transformer 和注意力机制(含完整代码实现)

深度解析 Transformer 和注意力机制 在《图解NLP模型发展&#xff1a;从RNN到Transformer》一文中&#xff0c;我介绍了 NLP 模型的发展演化历程&#xff0c;并用直观图解的方式为大家展现了各技术的架构和不足。有读者反馈图解方式虽然直观&#xff0c;但深度不足。考虑到 Tra…

Java设计模式七大原则-单一职责原则

✨作者&#xff1a;猫十二懿 ❤️‍&#x1f525;账号&#xff1a;CSDN 、掘金 、个人博客 、Github &#x1f389;公众号&#xff1a;猫十二懿 单一职责原则 1、单一职责介绍 单一职责原则&#xff08;SRP&#xff1a;Single Responsibility Principle&#xff09;是指一个类…

二层交换机和三层交换机的区别

交换机端口是现代 IT 生态系统中网络通信过程的重要组成部分。通过将数据包从一个网段或网络设备转发到另一个网段或网络设备&#xff0c;它们可实现网络连接和可访问性。但是&#xff0c;并非所有交换机都是平等的。为您的网络选择合适的交换机归结为一个关键决策&#xff1a;…

【Prompt 思考】AI 产品的交互必须是对话和聊天吗?

AI 产品的交互必须是对话和聊天吗&#xff1f; 1. 界面设计2. 对话和聊天3. 提示工程4. 思考5. 工具辅助用户写prompt的界面自动优化promptChatWeb的提示器商店 1. 界面设计 对话没有预设用途&#xff1a;用户不知道它能做什么&#xff0c;其实是什么也能干。提供更好的用户体…

【2023 · CANN训练营第一季】基于昇腾910的TF网络脚本训练(ModelArts平台)

准备工作: 1.注册华为云账号&#xff0c;获取AK/SAK&#xff0c;授权ModelArts&#xff0c;并申请华为云代金券 2.获取训练数据集&#xff0c;并进行数据预处理&#xff0c;比如离线制作成tfrecords(建议&#xff0c;可选) 3.将数据集(训练脚本)上传到OBS 4.安装PycharmIDE及To…

一文细说vDSO机制原理

1. 什么是 vDSO 众所周知&#xff0c;操作系统为我们管理硬件资源&#xff0c;并以系统调用的方式对用户进程提供 API&#xff0c;但是 syscall 很慢&#xff0c;涉及陷入内核以及上下文切换。对于少量频繁调用的系统调用&#xff08;比如获取当期系统时间&#xff09;来说&am…