1. 程式人生 > >Sqlchemy特點與ORM增刪改查操作

Sqlchemy特點與ORM增刪改查操作

1.Sqlchemy特點
1.sqlchemy支援的欄位型別
在這裡插入圖片描述
2.sqlchemy支援的欄位限制
在這裡插入圖片描述
3.sqlchemy查詢過濾器
在這裡插入圖片描述4.sqlchemy執行函式
在這裡插入圖片描述2.ORM的增刪改查
首先我們建立三個表,user,student,role 都在名為student1的資料庫內

first 表之間的關聯

在這裡插入圖片描述
在這裡插入圖片描述在這裡插入圖片描述注意:這裡的__repr__函式是會自動執行的不需呼叫
因為user和role_id是多對一的關係,所以用外來鍵關聯
相反role和user是一對多,所以用反向引用
這樣我們就生成了三個資料庫表

second 向表內寫入資料

在這裡插入圖片描述
其中 db.session.add( )是新增內容到表裡
db.session.commit ( )是同步資料庫表
我們可以看到資料庫
在這裡插入圖片描述

在這裡插入圖片描述資料寫入完畢

third 資料的檢查以及檢查方法

在程式碼最後新增: print (Role.query.all ( ) ) … print( User.query.all ( ) )
就會列印名字
在這裡插入圖片描述
因為程式碼中有__repr__( ) 函式,所以會顯示

forth 根據條件查詢
在這裡插入圖片描述
結果
在這裡插入圖片描述

fifth 更新內容
在這裡插入圖片描述
更改user表中名為redhat49使用者密碼
返回如下
在這裡插入圖片描述
最終我們在資料庫中看到
在這裡插入圖片描述

sixth 對於查詢資訊進行限制顯示

在這裡插入圖片描述
這裡我們只要前五個
返回如下
在這裡插入圖片描述

seventh 多個過濾函式加一個顯示函式

在這裡插入圖片描述
這裡對於查詢資訊進行排序 預設由小到大 ,由大到小 desc( User.add_time) ;
在這裡插入圖片描述
顯而已見,正常排序是由大到小
偏移量是向右偏移
而切片從第三個開始,是和偏移量一個作用
count 代表長度

eighth 分頁

在這裡插入圖片描述
第一個引數代表第幾頁,第二個引數代表每頁顯示多少條資料
在這裡插入圖片描述

ninth 反向引用的使用

在這裡插入圖片描述
在這裡插入圖片描述

3.補充…flask_bootstrap
1.如何在flask中使用Bootstrap
要想在程式中整合Bootstrap,顯然要對模板做所有必要的改動.不過更簡單的方法是使用一個名為Flask-Bootstrap的Flask擴充套件,簡化整合的過程. Flask-Bootstrap使用pip安裝:

  pip  install     flask_bootstrap

2.Flask擴充套件一般都在建立程式例項時初始化,下面是Flask_Bootstrap的初始化方法
‘’’

     from     flask_bootstrap   import  Bootstrap
     app=Flask(__name__)
     bootstrap=Bootstrap(app)

初始化Flask-Bootstrap之後,就可以在程式中使用一個包含所有Bootstrap檔案的基模板. 這個模板利用jinjia2的模板繼承機制,讓程式擴充套件一個具有基本頁面結構的基模板,其中就有用來引入Bootstrap的元素.

3.Flask-Bootstrap定義的其他可用塊:
參考連結: https://pythonhosted.org/Flask-Bootstrap/basic-usage.html#available-blocks
塊名   說明
doc 整個html文件
html_attribs html標籤屬性
html   html標籤中的內容
head head標籤中的內容
title title標籤中的內容
metas 一組meta標籤
styles 層疊樣式表定義
body_attribs body標籤的屬性
body body標籤中的內容
navbar 使用者定義的導航條
content 使用者定義的頁面內容
scripts 文件底部的JavaScript 宣告

4.如何引用bootstrap的基模板

{%extends "bootstrap/base.html"%}

{%block title %}Flask{% endblock %}

5.如何繼承原有內容
  上表中的很多塊都是Flask-Bootstrap 自用的,如果直接重定義可能會導致一些問題。例如,Bootstrap 所需的檔案在styles 和scripts 塊中宣告。如果程式需要向已經有內容的塊中新增新內容,必須使用Jinja2 提供的super() 函式。例如,如果要在衍生模板中新增新的JavaScript 檔案,需要這麼定義scripts 塊:

{% block scripts %}
{{ super() }}

{% endblock %}

4.補充…Flask_wtf

  • flask-bootstrap(新增css, js樣式)—提供了base.html, wtf.html
    • flask-wtf(表單處理)-
      - 表單型別(StringField, PasswordField, SubmitField, FileField)
      - 驗證表單(DataRequired, Length, Email, Regexp, EqualTo)

這裡附帶json的一個例子
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述