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設定如下: 「mysql+pymysql://root:123456@localhost:3306/helloflask」dialect資料庫實現
driver資料庫的驅動
在初始化__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...