1. 程式人生 > >【Flask】4個session(四)資料庫會話物件

【Flask】4個session(四)資料庫會話物件

在前面的部落格總結了四個session中的三個:

【Flask】4個session(一)狀態保持及請求/應用向下文

【Flask】4個session(二)請求上下文物件

【Flask】4個session(三)Flask_session擴充套件包

今天抽出時間把第四個寫完,並總結一下他們之間的關係。


這第四個session是依存於Flask_SQLAlchemy的,所以我們從SQLAlchemy說起

❶什麼是SQLAlchemy?

答:SQLAlchemy是一個關係型資料庫框架,它提供了高層的 ORM 和底層的原生資料庫的操作,讓開發者不用直接和 SQL 語句打交道,而是通過 Python 物件來操作資料庫,在捨棄一些效能開銷的同時,換來的是開發效率的較大提升。

一句話:就是對資料庫的抽象!

那在Flask中SQLAlchemy是怎麼實現的呢?↙

❷什麼是Flask-SQLAlchemy?

答:Flask-SQLAlchemy是一個簡化了 SQLAlchemy 操作的flask擴充套件,是SQLAlchemy的具體實現,封裝了對資料庫的基本操作。

舉例:如果說動物園是SQLAlchemy,那Flask-SQLAlchemy只是其中的一隻。

Flask-SQLAlchemy詳細內容見☞【Flask】什麼是Flask-SQLAlchemy?

❸應用舉例

指定資料庫:

# 配置連線資料庫
SQLALCHEMY_DATABASE_URI = 'mysql://root:
[email protected]
/資料庫名' SQLALCHEMY_TRACK_MODIFICATIONS = False

匯入,並例項化sqlalchemy物件

# 匯入flask_sqlalchemy
from flask_sqlalchemy import SQLAlchemy


# 例項化sqlalchemy物件
db = SQLAlchemy()

具體使用:

    # 提交資料到資料庫中
    try:
        # 儲存資料
        db.session.add(news)
        # 提交
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        # 回滾
        db.session.rollback()

幾個session之間的關係圖:

1、2、3中的“session”互相配合實現了狀態保持,4中的資料庫回話物件是獨立的,與狀態保持無關。