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.pswp.cn/news/213724.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213724.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213724.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從零開始搭建企業管理系統(四):集成 Knife4j

集成 Knife4j 前言Knife4j是什么集成 Knife4j引入 pom 依賴添加基礎配置啟動程序測試完善文檔信息編寫配置類修改 UserController修改 UserEntity修改 BaseEntity 文檔效果圖swagger 界面knife4j 界面 前言 前面一小節我們使用postman來進行接口的調試&#xff0c;如果接口一多…

游戲王的題解

目錄 原題&#xff1a; 時間&#xff1a;1s 空間&#xff1a;256M 題目描述 輸入格式 輸出格式 樣例輸入 樣例輸出 題目大意&#xff1a; 主要思路&#xff1a; dp轉移&#xff1a; dp初始化&#xff1a; 代碼&#xff1a; 原題&#xff1a; 時間&#xff1a;1s …

springboot集成knife4j詳細教程

使用原生的swagger作為接口文檔&#xff0c;功能不夠強大&#xff0c;并且默認的ui比較簡陋&#xff0c;不符合大眾審美。所以實際開發中推薦使用knife4j對swagger進行增強。knife4j的地址&#xff1a;https://gitee.com/xiaoym/knife4j 基本使用 想要使用knife4j非常簡單&…

深入學習Redis:從入門到實戰

Redis快速入門 1.初識Redis1.1.認識NoSQL1.1.1.結構化與非結構化1.1.2.關聯和非關聯1.1.3.查詢方式1.1.4.事務1.1.5.總結 1.2.認識Redis1.3.安裝Redis1.3.1.依賴庫1.3.2.上傳安裝包并解壓1.3.3.啟動1.3.4.默認啟動1.3.5.指定配置啟動1.3.6.開機自啟 1.4.Redis桌面客戶端1.4.1.R…

【VS Code開發】使用Live Server搭建MENJA小游戲并發布至公網遠程訪問

文章目錄 前言1. 編寫MENJA小游戲2. 安裝cpolar內網穿透3. 配置MENJA小游戲公網訪問地址4. 實現公網訪問MENJA小游戲5. 固定MENJA小游戲公網地址 前言 本篇教程&#xff0c;我們將通過VS Code實現遠程開發MENJA小游戲&#xff0c;并通過cpolar內網穿透發布到公網&#xff0c;分…

C++ //習題3.8 寫出下面各邏輯表達式的值。設a=3,b=4,c=5。

C程序設計 &#xff08;第三版&#xff09; 譚浩強 習題3.8 習題3.8 寫出下面各邏輯表達式的值。設a3&#xff0c;b4&#xff0c;c5。 (1) a b > c && b c (2) a || b c && b - c (3) !(a > b) && !c || 1 (4) !(x a) && (y b…

FastAPI之響應狀態碼

使用FastAPI自定義響應狀態碼 FastAPI 是一個現代、快速的 web 框架&#xff0c;用于構建API服務&#xff0c;它允許你通過Python 3.6及以上版本進行編程。一個重要的API設計是返回合適的響應狀態碼&#xff0c;這可以使得客戶端理解服務端的處理結果。本教程將向你展示如何在…

推出 Amazon EC2 C7i 實例

亞馬遜云科技宣布全面推出由定制的第 4 代英特爾至強可擴展處理器&#xff08;代號為 Sapphire Rapids&#xff09;提供支持的 Amazon Elastic Compute Cloud (Amazon EC2) C7i 實例。這些定制處理器僅在亞馬遜云科技上可用&#xff0c;與其他云提供商使用的基于 x86 的同類英特…

Kafka事務是怎么實現的?Kafka事務消息原理詳解

目錄 一、Kafka事務性消息1.1 介紹Kafka事務性消息1.2 事務性消息的應用場景1.3 Kafka事務性消息的優勢 二、Kafka事務性消息的使用2.1 配置Kafka以支持事務性消息生產者配置消費者配置 2.2 生產者&#xff1a;發送事務性消息創建Kafka生產者開始事務發送消息提交或中止事務 2.…

logstash之grok插件自定義規則學習

文章目錄 1、前言2、Grok提供的常用Patterns說明及舉例2.1 常用的表達式說明 3、使用grok插件進行日志字段處理4、案例1&#xff1a;處理nginx的日志4.1、查看nginx日志格式4.2、對nginx的日志進行過濾處理 5、案例2&#xff1a;處理tomcat的日志5.1、[安裝logstash-filter-mul…

外包干了3個月,技術退步明顯.......

先說一下自己的情況&#xff0c;大專生&#xff0c;18年通過校招進入武漢某軟件公司&#xff0c;干了接近4年的功能測試&#xff0c;今年年初&#xff0c;感覺自己不能夠在這樣下去了&#xff0c;長時間呆在一個舒適的環境會讓一個人墮落! 而我已經在一個企業干了四年的功能測…

【MySQL】在 Centos7 環境下安裝 MySQL

環境搭建 一、檢查環境二、檢查系統安裝包三、安裝 mysql yum 源四、安裝 mysql 服務五、啟動服務六、登錄 mysql七、配置 my.cnf 注意&#xff0c;我們搭建的 mysql 環境是在 Linux 的 Centos7 環境下安裝的~ 一、檢查環境 注意&#xff0c;我們在安裝和卸載中&#xff0c;先…

pytorch 中 drop_last與 nn.Parameter

1. drop_last 在使用深度學習&#xff0c;pytorch 的DataLoader 中&#xff0c; from torch.utils.data import DataLoader# Define your dataset and other necessary configurations # Create DataLoader train_loader DataLoader(dataset, batch_sizebatch_size, drop_la…

vue項目列表跳轉詳情返回列表頁保留搜索條件

需求 列表進入詳情后&#xff0c;返回詳情的時候保留搜索的條件&#xff0c;第幾頁進入的返回還在第幾頁 1.在詳情頁設置定義一個字段 mounted() {sessionStorage.setItem("msgInfo", true);},2.在獲取列表數據的時候在mounted里面判斷定義的字段 if (sessionStor…

【EI會議征稿】第二屆純數學、應用數學與計算數學國際學術會議(PACM 2024)

第二屆純數學、應用數學與計算數學國際學術會議&#xff08;PACM 2024&#xff09; 2024 2nd International Cnference on Pure, Applied and Computational Mathematics (PACM 2024) 第二屆純數學、應用數學計算數學國際學術會議 (PACM2024) 將于2024年1月19-21日在中國廈門隆…

報錯:AttributeError: ‘DataFrame‘ object has no attribute ‘reshape‘

這個錯誤通常發生在你試圖在 Pandas DataFrame 上直接使用 reshape 方法時。reshape 方法通常與 NumPy 數組相關聯&#xff0c;而不是 Pandas DataFrame。 如果你正在使用 Pandas DataFrame 并希望重新塑造它&#xff0c;你應該使用 Pandas 的重塑函數&#xff0c;如 pivot、m…

linux常用命令大全50個Linux常用命令

Linux有許多常用的命令&#xff0c;這些命令可以用來管理文件、運行程序、查看系統狀態等。以下是一些常用的Linux命令&#xff1a; pwd&#xff1a;顯示當前所在的工作目錄的全路徑名稱。cd&#xff1a;用于更改當前工作目錄&#xff0c;例如&#xff0c;若要進入Documents目…

UE5 樹葉飄落 學習筆記

一個Plane是由兩個三角形構成的&#xff0c;所以World Position Offset&#xff0c;只會從中間這條線折疊 所有材質 這里前幾篇博客有說這種邏輯&#xff0c;就是做一個對稱的漸變數值 這里用粒子的A值來做樹葉折疊的程度&#xff0c;當然你也可以用Dynamic Param 這樣就可以讓…

Android 11.0 長按按鍵切換SIM卡默認移動數據

Android 11.0 長按按鍵切換SIM卡默認移動數據 近來收到客戶需求想要通過長按按鍵實現切換SIM卡默認移動數據的功能&#xff0c;該功能主要通過長按按鍵發送廣播來實現&#xff0c;具體修改參照如下&#xff1a; 首先創建廣播&#xff0c;具體修改參照如下&#xff1a; /vend…