flask SQLAlchemy基本使用

2021-09-02 22:49:35 字數 2659 閱讀 9516

作為資料的操作,最基本的就是增刪改查

常用的sqlalchemy查詢過濾器

過濾器說明

filter()

把過濾器新增到原查詢上,返回乙個新查詢

filter_by()

把等值過濾器新增到原查詢上,返回乙個新查詢

limit

使用指定的值限定原查詢返回的結果

offset()

偏移原查詢返回的結果,返回乙個新查詢

order_by()

根據指定條件對原查詢結果進行排序,返回乙個新查詢

group_by()

根據指定條件對原查詢結果進行分組,返回乙個新查詢

常用的sqlalchemy查詢執行器

方法說明

all() 以列表形式返回查詢的所有結果

first()

返回查詢的第乙個結果,如果未查到,返回none

first_or_404()

返回查詢的第乙個結果,如果未查到,返回404

get()

返回指定主鍵對應的行,如不存在,返回none

get_or_404()

返回指定主鍵對應的行,如不存在,返回404

count()

返回查詢結果的數量

paginate()

返回乙個paginate物件,它包含指定範圍內的結果

建立表:db.create_all()

刪除表:db.drop_all()

以講師,教室,課程,單元 為例,首先需要設定foreignkey外來鍵約束

#返回一條

pptagendas.query.filter_by(name="王").first()

pptagendas.query.first()

pptagendas.query.get(1)

pptagendas.query.get_or_404(1)

#返回所有

pptagendas.query.filter_by(name="王").all()

一條資料返回的結果為列表,且不支援jsonify,需要在model類中定義方法轉下格式

def to_json(self):

dict = self.__dict__

if "_sa_instance_state" in dict:

del dict["_sa_instance_state"]

return dict

多條通過for…in呼叫to_json

通過keyword關鍵字搜尋獲取所有的單元和所屬的教室名,

使用join()方法,需要先行在model類中定義foreignkey進行關聯,如果有多個外來鍵同時關聯一張表,需要在join()裡進行指定關聯

獲取指定字段使用with_entities(),where語句寫在filter()中

sections.query.with_entities(sections,  rooms.namecn).join(rooms, rooms.id == sections.roomid).filter(

or_(sections.id.like('%' + keyword + '%'), sections.topiccn.like('%' + keyword + '%'),

sections.topicen.like('%' + keyword + '%'),

sections.roomid.like('%' + keyword + '%')),

not_(sections.del == 1)).all()

#select a.*,b.namecn from sections a inner join rooms b on

#(a.roomid = b.id) where ...

先查出資料放到會話裡,再通過會話進行刪除

#刪除

result=room.query.filter(room.namecn=='111').first()

db.session.delete(result)

try:

db.session.commit()

#失敗列印錯誤日誌並回滾

except exception as e:

db.session.rollback()

print(e)

同樣先查出

result=room.query.filter(room.namecn=='111').first()

result.namecn= "王"

try:

db.session.commit()

#失敗列印錯誤日誌並回滾

except exception as e:

db.session.rollback()

print(e)

放在model物件裡

result=room(namecn="111")

db.session.add(result)

try:

db.session.commit()

#失敗列印錯誤日誌並回滾

except exception as e:

db.session.rollback()

print(e)

Flask SQLAlchemy學習總結

配置鍵說明 sqlalchemy database uri 用於連線資料的資料庫。例如 sqlalchemy binds 乙個對映繫結 bind 鍵到 sqlalchemy 連線 uris 的字典。用於繫結多個資料庫 sqlalchemy echo 如果設定成 true sqlalchemy 將會記...

Flask SQLAlchemy定義模型

模型表示程式使用的資料實體,在flask sqlalchemy中,模型一般是python類,繼承自db.model,db是sqlalchemy類的例項,代表程式使用的資料庫。類中的屬性對應資料庫表中的列。id為主鍵,是由flask sqlalchemy管理。db.column類建構函式的第乙個引數是...

flask sqlalchemy用法簡介

coding utf 8 time 2019 5 26 20 54 author dailinqing email dailinqing 126.com file flask db.py software pycharm from flask sqlalchemy import sqlalchemy...