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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一些AG10K FPGA 调试的建议-Douglas

PLL AGM FPGA 在配置成功时&#xff0c;PLL 已经完成锁定&#xff0c;lock 信号已经变高&#xff1b;如果原设计中用 lock 信号输出实现系统 reset 的复位功能&#xff0c;就不能正确完成上电复位&#xff1b;同时&#xff0c;为了保证 PLL 相移的稳定&#xff0c;我们需要在 P…

107.管道(有名、无名管道)

目录 管道 无名管道 无名管道的创建 无名管道的基本用法 有名管道 写管道的进程&#xff1a; 读管道的进程&#xff1a; 管道 管道是一种进程间通信的机制&#xff0c;允许一个进程的输出直接作为另一个进程的输入。在Linux 系统中&#xff0c;管道通过 pipe 系统调用来…

如何在Facebook Business Manager进行企业认证

Facebook Business Manager&#xff0c;简称BM&#xff0c;按照字面意思理解就是Facebook官方的商务管理平台&#xff0c;是供广告主团队去使用的一个管理工具。BM可以绑定Facebook公共主页、广告账户等一系列Facebook账号。通过BM&#xff0c;企业就可以在一个后台&#xff0c…

SU渲染受到电脑性能影响大吗?如何提高渲染速度

一般3d设计师们在进行设计工作前都需要提供一台高配电脑&#xff0c;那么你这知道su渲染对电脑要求高吗&#xff1f;电脑带不动su怎么解决&#xff1f;su对电脑什么配件要求高&#xff1f;今天这篇文章就详细为大家带来电脑硬件对su建模渲染的影响&#xff0c;以及su渲染慢怎么…

STM32 LCD 简单显示彩色图片

STM32 LCD 数组方式简单显示彩色图片 文章目录 STM32 LCD 数组方式简单显示彩色图片前言1、图片处理1.1 准备图片1.2 查看和调整图片大小 2、Picture2Hex软件使用3、函数代码实现3、图片显示效果4、显示图片太大会报错总结 前言 在使用LCD填充的时候发现正点原子提供了一个很好…

【数组Array】力扣-167 两数之和II-输入有序数组

目录 题目描述 解题过程 labuladong题解 题目描述 给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] &a…

connection error;reply-code=503;unknown exchange type ‘x-delayed-message‘

错误原因 这个错误表明你的 RabbitMQ 服务器不认识交换机类型 “x-delayed-message”&#xff0c;这通常是因为你的 RabbitMQ 服务器没有启用 rabbitmq_delayed_message_exchange 插件&#xff0c;或者插件版本与你的 RabbitMQ 服务器不兼容。 解决方法 启用 RabbitMQ 延迟队…

开源的数据流技术,该选择Redpanda还是Apache Kafka?

本文将比较Apache Kafka和Redpanda两种开源的数据流技术&#xff0c;在云原生实时处理能力上的不同&#xff0c;以及如何在项目中做出选择。 目前&#xff0c;Apache Kafka不但成为了数据流处理领域事实上的标准&#xff0c;而且带动了同类产品的出现。Redpanda就是其中之一…

VMware虚拟机系统CentOS镜像的下载

文章目录 阿里云下载官网下载参考文档 一些小版本可能过时或者其他原因已经不能存在了&#xff0c;只有大版本号最新的&#xff0c;或者其他最新版本 阿里云下载 1-百度搜索&#xff1a;阿里云 2-找到开发者社区 3-找到下载&#xff0c;选择镜像 4-选择系统 5-点击镜像地…

成都工业学院Web技术基础(WEB)实验一:HTML5排版标签使用

写在前面 1、基于2022级计算机大类实验指导书 2、代码仅提供参考&#xff0c;前端变化比较大&#xff0c;按照要求&#xff0c;只能做到像&#xff0c;不能做到一模一样 3、图片和文字仅为示例&#xff0c;需要自行替换 4、如果代码不满足你的要求&#xff0c;请寻求其他的…

【JavaWeb学习专栏 | CSS篇】css简单介绍 css常用选择器集锦

个人主页&#xff1a;[兜里有颗棉花糖(https://xiaofeizhu.blog.csdn.net/) 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【JavaWeb学习专栏】【Java系列】 希望本文内容可以帮助到大家&#xff0c;一起加油吧&#xff01;…

区块链技术的未来,了解去中心化应用的新视角

小编介绍&#xff1a;10年专注商业模式设计及软件开发&#xff0c;擅长企业生态商业模式&#xff0c;商业零售会员增长裂变模式策划、商业闭环模式设计及方案落地&#xff1b;扶持10余个电商平台做到营收过千万&#xff0c;数百个平台达到百万会员&#xff0c;欢迎咨询。 随着…