Flask应用基础入门总结

news2025/1/23 22:31:41

【1】使用migrate方式进行数据库连接

使用migrate方式进行数据库连接需要在终端分别运行三行代码:

#init(运行一次即可)(此db为自己设置的连接数据库的对象,可以修改)
flask db init
#(将orm模型生成迁移脚本)
flask db migrate
#(将迁移脚本映射到数据库中)
flask db upgrade 

① flask db init

执行结果为生成migrations文件夹:

在这里插入图片描述

② flask db migrate

#(将orm模型生成迁移脚本)
flask db migrate

如下所示这里会生成850b7054a4f6_.py,其实也就是数据模型(数据库表)迁移脚本。

在这里插入图片描述

在这里插入图片描述

这时查看数据库只有一个表alembic_verison,并且是空的。
在这里插入图片描述

③ flask db upgrade

执行迁移脚本,创建数据表并设置版本号。

#(将迁移脚本映射到数据库中)
flask db upgrade 

在这里插入图片描述在这里插入图片描述

【2】jinja2的使用

几个标签说明:

{% ... %}是声明标签
{{ ... }} 是打印输出表达式文本结果的标签
{# ... #} 用于注释,但是不会输出到结果文件中

① for 和 if 动态渲染select

<select name="floorId" id="floorId">
	{% for floor in floors %}
	   <option value="{{ floor.id }}"
	           {% if floor.id == room.floor_id %}
	           selected
	           {% endif %}
	    >{{floor.name}}</option>
	{% endfor  %}
</select>

for循环内部使用说明:

loop.index  当前循环的迭代。(1索引)
loop.index0 当前循环的迭代。(0索引)
loop.revindex   循环结束的迭代次数(1个索引)
loop.revindex0  循环结束的迭代次数(0索引)
loop.first  如果是第一次迭代,则为true
loop.last   如果最后一次迭代为真。
loop.length 序列中的项目数。
loop.cycle  一个辅助函数,用于在序列列表之间循环。参见下面的说明。
loop.depth  指示渲染当前处于递归循环的深度。从1级开始
loop.depth0 指示渲染当前处于递归循环的深度。从0级开始

② include引入模板文件

如下所示在我们页面可以引入公共文件:

{% include 'system/common/header.html' %}
//这里为页面主体部分
{% include 'system/common/footer.html' %}

③ 表单回显

如下所示,在渲染模板的时候带回数据,那么在表单页面通过{{ }}即可回显。

@bp.get('/edit/<int:id>')
@authorize("system:repair:edit", log=True)
def edit(id):
    repair = curd.get_by_id(Repair, id)
    rooms = Room.query.all()
    return render_template('system/repair/edit.html', repair=repair, rooms=rooms)

输入框回显如下(select一样)

<input type="text" value="{{ repair.id }}" name="id"  class="layui-input">

textarea 回显如下:

<textarea type="text" name="remark" lay-verify="required"
autocomplete="off" placeholder="请输入报修说明" class="layui-textarea">
{{ repair.remark }}
</textarea>

【3】使用SQLAlchemy进行CRUD

flask默认提供模型操作,但是并没有提供ORM,所以一般开发的时候我们会采用flask-SQLAlchemy模块来实现ORM操作。

SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM 和底层的原生数据库的操作。

flask-sqlalchemy 是一个简化了 SQLAlchemy 操作的flask扩展。

SQLAlchemy文档: https://www.sqlalchemy.org/
在这里插入图片描述

① 保存对象

roomOrder = RoomOrder(user_id=userId, user_name=username, order_time=orderTime, remark=remark, )
db.session.add(roomOrder)
db.session.commit()

② 更新对象

在Flask-SQLAlchemy中,可以使用db.session对象的commit()方法来提交数据的修改。

更新单个对象

room = Room.query.get(roomOrder.room_id)
room.curr_num = room.curr_num - 1
db.session.commit()

批量更新对象

RoomOrder.query.filter_by(id=id).update({'state': 0})
db.session.commit()

③ 删除对象

删除单个对象

room = Room.query.get(roomOrder.room_id)
db.session.delete(room )
db.session.commit()

批量删除对象

res = RoomOrder.query.filter_by(name='一教').delete()
db.session.commit()

④ 查询数据

查询所有记录

# 查询所有记录
datas= RoomOrder.query.all()

条件查询

# 条件查询
data= RoomOrder.query.filter_by(name='一教').first()

排序查询

# 排序查询(升序)
datas= RoomOrder.query.order_by(RoomOrder.id.desc()).all() #asc()升序

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

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

相关文章

Javaweb之附录的详细解析

05. 附录 5.1 更新依赖索引 有时候给idea配置完maven仓库信息后&#xff0c;在idea中依然搜索不到仓库中的jar包。这是因为仓库中的jar包索引尚未更新到idea中。这个时候我们就需要更新idea中maven的索引了&#xff0c;具体做法如下&#xff1a; 打开设置----搜索maven----R…

N皇后,回溯【java】

问题描述 八皇后问题是十九世纪著名的数学家高斯于1850年提出的。 问题是&#xff1a;在88的棋盘上摆放八个皇后&#xff0c;使其不能互相攻击&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。可以把八皇后问题扩展到n皇后问题&#xff0c;即在nn的棋盘上摆…

JMeter提取器

JMeter三大提取器 一、正则表达式提取器二、XPath提取器三、JSON提取器四、JSON属性 一、正则表达式提取器 使用场景&#xff1a; 任意格式的响应数据都可以使用正则表达式提取器&#xff1b;操作步骤&#xff1a; 添加线程组-添加HTTP请求-添加后置处理器-添加正则表达式提取…

udp多播组播

import socket ,struct,time# 组播地址和端口号 MCAST_GRP 239.0.0.1 MCAST_PORT 8888 # 创建UDP socket对象 sock socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) # 绑定socket对象到本地端口号 # sock.bind((MCAST_GRP, MCAST_PORT)) …

textarea文本框回车enter的时候自动提交表单,根据内容自动高度

切图网近期一个bootstrap5仿chatgpt页面的项目遇到的&#xff0c;textarea文本框回车enter的时候自动提交表单&#xff0c;根据内容自动高度&#xff0c;代码如下&#xff0c;亲测可用。 <textarea placeholder"Message ChatGPT…" name"" rows"&q…

排序的简单理解(上)

1. 排序的概念及引用 1.1 排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作&#xff08;按照我们的需求能够有序的将数据信息排列起来&#xff09;。 稳定性&#xff1a;假…

大数据讲课笔记1.3 Linux目录操作

文章目录 零、学习目标一、导入新课二、新课讲解&#xff08;一&#xff09;常用权限操作1、常用权限操作&#xff08;1&#xff09;chgrp命令&#xff08;2&#xff09;chown命令&#xff08;3&#xff09;chmod命令 2、权限操作实战任务1、创建文件&#xff0c;设置其用户组任…

docker Compose-网络设置

目录 一、概述 二、容器网络模型(了解) CNM主要有三部分组成 CNM驱动接口 Docker内置网络驱动 三、Docker Compose-网络设置二 一、概述 二、使用 links 三、自定义网络 四、配置默认网络 五、已存在的网络 一、概述 随着微服务的事件&#xff0c;应用的越来越多&a…

去除水中的悬浮固体、重金属和各种酸

每个球粒直径通常在2-5毫米范围内 的&#xff0c;可用于固定床吸附污染物。不过球粒尺寸可以根据客户的具体需求生产 TRAPPSORB尽管它与颗粒产品具有相同的化学成分&#xff0c;但由于其独特 的外表面和结构&#xff0c;它与其他基于MgO的材料根本不同&#xff0c; 它由独特的…

BigData之Google Hadoop中间件安装

前言 Hadoop / Zookeeper / Hbase 因资源有限 这三个都是安装在同一台Centos7.9的机器上 但通过配置 所以在逻辑上是distributed模式 1 Java安装 1.1 下载java11 tar/opt/java/jdk-11.0.5/ 1.2 环境配置修改 文件/etc/profile export JAVA_HOME/opt/java/jdk-11.0.5/ e…

Uniapp安卓原生插件开发Demo

文章目录 前言一、安装开发工具二、导入uni插件原生项目三、开发Module四、开发Component五、合并原生代码到uniapp项目中总结 前言 当HBuilderX中提供的能力无法满足App功能需求&#xff0c;需要通过使用Andorid/iOS原生开发实现时&#xff0c;可使用App离线SDK开发原生插件来…

【Python可视化系列】一文彻底教会你绘制美观的折线图(理论+源码)

一、前言 折线图是一种常用的可视化图表&#xff0c;可以清晰地展示数据随时间或其他连续变量的变化趋势&#xff0c;通过连接数据点&#xff0c;可以观察到数据的上升、下降、波动等变化趋势&#xff0c;帮助人们更直观地理解数据的变化规律。 二、基本折线图 2.1简单折线图 …

T5论文个人记录

参考&转载自&#xff1a; 介绍Google推出的大一统模型—T5_谷歌大模型_深度之眼的博客-CSDN博客 T5 和 mT5-CSDN博客 T5&#xff1a;Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer&#xff08;万字长文略解T5&#xff09;_t5论文…

Diffusion Models: A Comprehensive Survey of Methods and Applications

摘要 扩散模型作为一个强大的新的深度生成模型系列出现&#xff0c;在许多应用中具有破纪录的性能&#xff0c;包括图像合成、视频生成和分子设计。在这项调查中&#xff0c;我们对迅速扩大的扩散模型的工作进行了概述&#xff0c;将研究分为三个关键领域&#xff1a;有效采样…

建材物料企业网站建设的效果如何

建材物料行业涉及的产品种类很多&#xff0c;对企业来说&#xff0c;由于具备批发与大规模订购属性&#xff0c;因此在实际经营中&#xff0c;品牌作用往往很大&#xff0c;同时还得多渠道宣传拓展才能进一步扩张。 而企业面临的痛点也很明显&#xff1a; 1、品牌宣传拓客难 …

19.java程序设计-基于SpringBoot的博客管理系统的设计与实现

摘要 随着信息技术的迅速发展&#xff0c;博客作为一种重要的信息传播和交流工具&#xff0c;逐渐在互联网上占据重要地位。为了满足用户对个性化博客管理的需求&#xff0c;本研究设计并实现了一种基于Spring Boot框架的博客管理系统。 本系统通过采用前后端分离的架构&…

巧用ChatGPT高效搞定Excel数据分析【文末送书-04】

文章目录 一.巧用ChatGPT高效搞定Excel数据分析1. ChatGPT简介2. 安装所需工具2.1 Python2.2 OpenAI GPT库 3. 与ChatGPT交互进行数据分析4. 利用ChatGPT进行筛选和排序5. ChatGPT的局限性和注意事项6. ChatGPT与数据可视化7. ChatGPT与进阶数据分析任务 二. 结论&文末福利…

ODOO领先其他ERP的王炸功能:作业路线!(含MTO模式配置图表)

和众多ERP系统比较&#xff0c;ODOO-ERP中的作业路线功能可谓相当强大&#xff0c;可以自行定义供应链路线&#xff0c;以及单据同步生成。极大地增强了不同业务场景的适应性和业务管理效率&#xff01; 自定义供应路线的特点&#xff1a;对于很多灵活多变的企业而言&#xff…

三维模型的顶层合并构建的模型质量提升方法探讨

三维模型的顶层合并构建的模型质量提升方法探讨 要提升倾斜摄影超大场景的三维模型的顶层合并构建的模型数据质量&#xff0c;可以从以下几个方面进行优化和改进。本文将对这些方面进行分析。 一、高质量原始数据的获取 高质量的原始数据是保证最终模型质量的基础。在倾斜摄影…

docker的基本管理和概念

docker的基本管理和概念 docker是什么&#xff1a;开源的应用容器引擎.基于go语言开发的&#xff0c;运行在linux系统当中的开源的轻量级的“虚拟机” docker的容器技术可以在一台主机上轻松的为任何应用创建一个轻量级的&#xff0c;可移植的&#xff0c;自给自足的容器 do…