Flask框架 07 模型使用配置

2021-08-27 16:24:03 字數 3991 閱讀 2189

flask預設並沒有提供任何資料庫操作的api

我們可以選擇任何適合自己專案的資料庫來使用

flask中可以自己選擇資料,用原生語句實現功能,也可以選擇orm(sqlalchemy,mongoengine)

sqlalchemy是乙個很強大的關係型資料庫框架,支援多種資料庫後台。sqlalchemy提供了高層orm,也提供了使用資料庫原生sql的低層功能。

orm:

將對物件的操作轉換為原生sql

優點: 易用性,可以有效減少重複sql

效能損耗少

設計靈活,可以輕鬆實現複雜查詢

移植性好

針對於flask的支援,官網位址(

pip install flask-sqlalchemy
安裝驅動

pip install pymysql
使用sqlalchemy的物件去建立字段

其中tablename指定建立的資料庫的名稱

建立models.py檔案,其中定義模型

from flask_sqlalchemy import sqlalchemy

db = sqlalchemy()

class

student

(db.model):

s_id = db.column(db.integer, primary_key=true, autoincrement=true)

s_name = db.column(db.string(16), unique=true)

s_age = db.column(db.integer, default=1)

__tablename__ = "student"

其中:

integer 表示建立的s_id欄位的型別為整形

primary_key 表示是否為主鍵

string 表示該字段為字串

unique 表示該欄位唯一

default 表示預設值

autoincrement 表示是否自增

在檢視函式中我們引入models.py中定義的db

@blue.route("/createdb/")

defcreate_db

(): db.create_all()

return

"建立成功"

@blue.route('/dropdb/')

defdrop_db

(): db.drop_all()

return

'刪除成功'

其中: db.create_all() 表示建立定義模型中對應到資料庫中的表

​ db.drop_all() 表示刪除資料庫中的所有的表

在定義的__init__.py檔案中使用sqlalchemy去整合乙個或多個flask的應用

有兩種方式:

第一種:

from flask_sqlalchemy import sqlalchemy

第二種:

def():

官網配置引數(

資料庫連線的格式:

dialect+driver://username:password@host:port/database

dialect資料庫實現

driver資料庫的驅動

設定如下: 「mysql+pymysql://root:123456@localhost:3306/helloflask」

在初始化__init__.py檔案中如下配置:

語法:

類名.query.***
獲取查詢集:

all()    獲取所有

filter(類名.屬性名==***)

filter_by(屬性名=***)

資料操作:

在事務中處理,資料插入

db.session.add(object)

db.session.add_all(list[object])

db.session.delete(object)

db.session.commit()

修改和刪除基於查詢

6.1 想學生表中新增資料
@blue.route('/createstu/')

defcreate_stu

(): s = student()

s.s_name = '小花%d' % random.randrange(100)

s.s_age = '%d' % random.randrange(30)

db.session.add(s)

db.session.commit()

return

'新增成功'

提交事務,使用commit提交我們的新增資料的操作

6.2 獲取所有學生資訊

將學生的全部資訊獲取到,並且返回給頁面,在頁面中使用for迴圈去解析即可

@blue.route("/getstudents/")

defget_students

(): students = student.query.all()

return render_template("studentlist.html", students=students)

6.3 獲取s_id=1的學生的資訊

寫法1:

students = student.query.filter(student.s_id==1)
寫法2:

students = student.query.filter_by(s_id=2)

注意:filter中可以接多個過濾條件

寫法3:

sql = 'select * from student where s_id=1'

students = db.session.execute(sql)

6.4 修改學生的資訊

寫法1:

students = student.query.filter_by(s_id=3).first()

students.s_name = '哈哈'

db.session.commit()

寫法2:

student.query.filter_by(s_id=3).update()

db.session.commit()

6.5 刪除乙個學生的資訊

寫法1:

students = student.query.filter_by(s_id=2).first()

db.session.delete(students)

db.session.commit()

寫法2:

students = student.query.filter_by(s_id=1).all()

db.session.delete(students[0])

db.session.commit()

注意:filter_by後的結果是乙個list的結果集

重點注意:在增刪改中如果不commit的話,資料庫中的資料並不會更新,只會修改本地快取中的資料,所以一定需要db.session.commit()

flask框架基本使用

1.環境的使用 mkvirtualenv 1.0 flask p python3 workon 1.0 flask pip install flask 1 1 第乙個helloworld程式 from flask import flask def abc return hello world if ...

Flask框架 基本使用

web world wide web 誕生最初的目的,是為了利用網際網路交流工作文件。web 發展至今,特別是伺服器端,涉及到的知識 內容,非常廣泛。這對程式設計師的要求會越來越高。如果採用成熟,穩健的框架,那麼一些基礎的工作,比如,安全性,資料流控制等都可以讓框架來處理,那麼程式開發人員可以把精力...

Flask中模型使用

1 資料庫模型建好後,建立模型和資料庫之間的聯絡,利用flask scripts外掛程式。使用步驟為 開啟控制台,進入工程目錄,執行 python manage.py db init,python manage.py db migrate 生成遷移檔案 python manage.py db upg...