Flask应用基础入门总结

【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()升序

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

qt creator配置opencv库 (MSVC版本)

目录 1. MSVC版本 1.1 使用cmake编译opencv 1.2 再使用visual studio 2019生成opencv的lib,dll 1.3 配置opencv的系统环境变量 1.4 新建qt项目 1. MSVC版本 1.1 使用cmake编译opencv 1.2 再使用visual studio 2019生成opencv的lib,dll 1.3 配置opencv的系统环境变量 D:…

了解构造函数原型对象的语法特征,掌握 JavaScript 中面向对象编程的实现方式,基于面向对象编程思想实现 DOM 操作的封装。(第三天)

有什么不懂可以去看我前两天的笔记 https://blog.csdn.net/weixin_70007095/article/details/134905674 目录 有什么不懂可以去看我前两天的笔记 JavaScript 进阶 - 第3天笔记 编程思想 面向过程 面向对象 构造函数 原型对象 constructor 属性 对象原型 原型继承 原型链 JavaSc…

2021版吴恩达深度学习课程Deeplearning.ai 05序列模型 12.5

学习内容 05.序列模型 1.1 为什么用序列模型 1.序列模型常见的应用 1.2 注释 notation 1.*T_x(i)表示训练样本x(i)的序列长度&#xff0c;T_y(i)表示target(i)的序列长度2.训练集表示单词的方式*构建字典的方式*在训练集中查找出现频率最高的单词*网络搜集常用字典3.如果遇…

linux交换分区管理SWAP

概念查看当前的交换分区&#xff1a;free 6.2.5 交换分区管理SWAP 6.2.5.1 概念 作用&#xff1a; ”提升“内存容量&#xff0c;防止OOM&#xff08;out of memory&#xff0c;内存溢出&#xff09;。 ​ 对应windows中的虚拟内存。 ​ 从功能上讲&#xff0c;交换分区主要是…

Idea spring项目中 resource图标错误解决方案

1.resources错误显示示例 2.resources正确显示示例 3.解决方案 第一步&#xff1a; 第二步&#xff1a; 点击完成即可。

网络和Linux网络_12(网络其他协议和技术)DNS+ICMP+NAT/NAPT+代理服务器

目录 1. 域名解析服务DNS 1.1 DNS和域名概念 1.2 域名解析过程 2. ICMP协议 2.1 ICMP协议格式(了解) 2.2 ping命令 3. NAT和NAPT 3.1 NAT概念 3.2 NATP概念 4. 代理服务器 4.1 代理服务器概念 4.2 NAT和代理服务器 5. 相关笔试选择题 答案及解析 本篇完。 前面几…

使用Python提取PDF文件中指定页面的内容

在日常工作和学习中&#xff0c;我们经常需要从PDF文件中提取特定页面的内容。在本篇文章中&#xff0c;我们将介绍如何使用Python编程语言和两个强大的库——pymupdf和wxPython&#xff0c;来实现这个任务。 1. 准备工作 首先&#xff0c;确保你已经安装了以下两个Python库&…

1.鸿蒙应用程序开发app_hap开发环境搭建

1.下载Node.js, Javascipts的运行环境 node.js版本下载v12.18.3/https://www.cnblogs.com/txwtech/p/17865780.html 2.下载并安装DevEco Studio DevEco Studio 3.1 DevEco Studio 3.1配套支持HarmonyOS 3.1版本及以上的应用及服务开发&#xff0c;提供了代码智能编辑、低代…

BUUCTF-[GYCTF2020]FlaskApp flask爆破pin

这道题不需要爆破也可以getshell ssti都给你了 {{((lipsum.__globals__.__builtins__[__import__](so[::-1])[popen]("\x63\x61\x74\x20\x2f\x74\x68\x69\x73\x5f\x69\x73\x5f\x74\x68\x65\x5f\x66\x6c\x61\x67\x2e\x74\x78\x74")).read())}} 但是学习记录一下pin…

华为OD机试 - 导师请吃火锅 - 逻辑分析(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&a…

RabbitMQ使用指南

介绍主要特点常用插件使用RabbitMQ的插件常用插件列表 应用场景Kafka与RabbitMq的区别主要优缺点安装步骤插件安装步骤 使用RabbitMqJava代码示例拓展 介绍 RabbitMQ是由Erlang语言开发的&#xff0c;基于AMQP&#xff08;高级消息队列协议&#xff09;协议实现的开源消息代理…

基于java swing 药品销售管理系统

大家好&#xff0c;我是DeBug&#xff0c;很高兴你能来阅读&#xff01;作为一名热爱编程的程序员&#xff0c;我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里&#xff0c;我将会结合实际项目经验&#xff0c;分享编程技巧、最佳实践以及解决问题的方法。无论你是…

Https证书/SSL证书异常导致访问失败该如何解决?

我们在使用SSL证书时&#xff0c;经常会碰到一些常见的SSL证书错误&#xff0c;例如浏览器提示证书无效&#xff0c;证书在地址栏中被红色警告等等。下面是关于SSL证书错误的几种原因及解决方法。 1.报错&#xff1a;NET::ERR_CERT_DATE_INVALID 原因&#xff1a;SSL证书已过…

大数据讲课笔记1.4 进程管理

文章目录 零、学习目标一、导入新课二、新课讲解&#xff08;一&#xff09;进程概述1、基本概念2、三维度看待进程3、引入多道编程模型&#xff08;1&#xff09;CPU利用率与进程数关系&#xff08;2&#xff09;从三个视角看多进程 4、进程的产生和消亡&#xff08;1&#xf…

智能优化算法应用:基于缎蓝园丁鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于缎蓝园丁鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于缎蓝园丁鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.缎蓝园丁鸟算法4.实验参数设定5.算法…

046:vue通过axios调用json地址数据的方法

第046个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

企业微信应用模板消息

是在发送应用消息接口的基础上&#xff0c;第三方应用支持一种新的消息类型&#xff1a;模板消息&#xff0c;msgtype指定为template_msg。模板消息是一种固定格式的消息。 注意 - 此消息类型目前仅第三方应用支持&#xff0c;自建应用不支持。服务商需在管理端申请模版。接口…

Maven基础

目录 Maven坐标 坐标简介 主要组成 Maven依赖管理 配置依赖 依赖简介 配置依赖 依赖传递 依赖传递简介 排除依赖 依赖范围 生命周期 生命周期简介 执行指定生命周期 Maven坐标 坐标简介 Maven中的坐标是资源的唯一标识&#xff0c;通过该坐标可以唯一定位资…

NSSCTF web刷题记录7

文章目录 [SDCTF 2022]CURL Up and Read[NUSTCTF 2022 新生赛]Translate [SDCTF 2022]CURL Up and Read 考点&#xff1a;SSRF 打开题目发现是curl命令&#xff0c;提示填入url 尝试http://www.baidu.com&#xff0c;成功跳转 将url的字符串拿去解码&#xff0c;得到json格式数…

LVGL | Demo实例使用说明

LVGL | Demo实例使用说明 时间&#xff1a;2023年12月10日21:51:17 文章目录 LVGL | Demo实例使用说明Demos for LVGLAdd the examples to your projectsDemosWidgetsMusic playerKeypad and encoderBenchmarkStress Contributing Demos for LVGL Add the examples to your p…