Flask資料庫操作

2021-08-29 12:17:51 字數 2148 閱讀 4303

• flask 資料庫主要是學習flask-sqlalchemy安裝及連線、使用資料庫、資料庫的遷移,可以定乙個大概的學習目標,我之前是這麼定的:

• • 能夠理解 orm 工作原理以及其優缺點

• 能夠寫出在 flask 中連線 mysql 的配置項格式(ip,埠,資料庫)

• 能夠使用 sqlalchemy 定義出關係為一對多模型類

• 能夠使用 sqlalchemy 的相關函式建立表及刪除表

• 能夠寫出的指定模型資料對資料庫的增刪改**

• 能夠寫出模型資料按照條件查詢的功能邏輯

• 能夠寫出模型資料按照指定數量分頁的功能邏輯

• 能夠寫出模型資料按照指定條件排序的功能邏輯

• 能夠按照課件步驟實現綜合圖書管理的相關案例

• 能夠使用 flask-migrate 擴充套件對資料庫進行遷移

今天來說一下資料庫的基礎操作,也就是增刪改查

會話用 db.session 表示。在準備把資料寫入資料庫前,要先將資料新增到會話中然後呼叫 commit() 方法提交會話。

在 flask-sqlalchemy 中,查詢操作是通過 query 物件運算元據。

最基本的查詢是返回表中所有資料,可以通過過濾器進行更精確的資料庫查詢。

建立表:db.create_all()

刪除表:db.drop_all()

另外說兩句,類似於這種刪除表、刪庫的語句,我一般是不去記的,因為在我學習的時候,所有的查詢語句都不敢興趣,唯獨看到刪庫的時候,眼睛一亮冒綠光!但有天你從事這份工作之後你會發現,刪庫跑路只是個謠言,你覺得你斷了別人財路你能跑的了??斷人財路如殺人父母,兄弟們謹記,如果真的要刪除一些東西,最好也要確認再三,畢竟刪庫一時爽,爽完悔斷腸!

查詢:filter——by精確查詢:返回名字等於wang的所有人

user.query.filter_by(name=』wang』).all()

first()返回查詢到的第乙個物件

user.quey.first()

all()返回查詢到的所有物件

user.query.all()

filter模糊查詢,返回名字姐為字元為g的所有資料。

user.query.filter(user.name.endswith(『g』)).all()

get():引數為主鍵,如果主鍵不存在沒有返回內容

user.query.get()

邏輯非,返回名字不等於wang 的所有資料

user.query.filter(user.name!=』wang』).all

not_相當於取反

from sqlalchemy import not_

user.query.filter(not_(user.name==『chen』)).all()

邏輯與,需要匯入and,返回and()條件滿足的所有資料

from sqlalchemy import and_

user.query.filter(and_(user.name!=『wang』,user.email.endswith(『163.com』))).all()

邏輯或,需要匯入or_

from sqlalchemy import or_

user.query.filter(or_(user.name!=『wang』,user.email.endswith(『163.com』))).all()

查詢資料後刪除

user = user.query.first()

db.session.delete(user)

db.session.commit()

user.query.all()

更新資料

user = user.query.first()

user.name = 『dong』

db.session.commit()

user.query.first()

關聯查詢示例:

查詢角色的所有使用者

#查詢roles表id為1的角色

rol = role.query.get(1)

#查詢該角色的所有使用者

rol.us.all()

查詢使用者所屬角色

#查詢user表id為3的使用者

usl = user.query.get(3)

#查詢使用者屬於什麼角色

usl.tole

flask資料庫操作

通過命令生成資料庫 必須先刪除在生成,不易維護 flask自帶遷移資料庫的框架 from flask script import manager 擴充套件db指令 flask script命令擴充套件包 需要安裝 from flask migrate import migrate,migrateco...

flask資料庫操作命令

資料庫增加,刪除,修改操作 增加 user user name laowang db.session.add user db.session.commit 修改 user.name xiaohua db.session.commit 刪除 db.session.delete user db.sess...

Flask的資料庫操作

flask model中表的格式 from import db class vulreport db.model tablename vul reports id db.column db.integer,primary key true author db.column db.string 64 ...