深入研究Python-Flask原始碼:flask_sqlalchemy中SQLAlchemy(object)類
阿新 • • 發佈:2018-12-28
小編從事python-flask框架的後端開發,為了吃透它,小編會不斷的深入研究原始碼,今天從 flask_sqlalchemy中SQLAlchemy(object)類開始深入研究。
class SQLALchemy(object): """ 該類用於將SQLAlchemy整合為一個或更多的Flask應用,取決於你如何去初始化一個有效的物件,或者你可以根據需要將它依附在Flask應用中使用。 有兩種使用模式非常相似。 第一種是繫結例項到一個非常具體的Flask應用程式: 應用=Flask(__name__) db = SQLAlchemy(應用) 第二種是一次性建立物件並配置後面的應用程式來支援它: db = SQLAlchemy() def create_app(): app = Flask(__name__) db.init_app(app) return app 兩者的區別在於,在第一種情況下,方法是:' create_all '和' drop_all '將一直工作,但在第二種情況下,Flask.app_context必須存在。預設情況下,Flask-SQLAlchemy將應用一些特定於後端的設定提高你與他們的經驗。SQLAlchemy為0.6 SQLAlchemy將探測庫以獲得本機unicode支援。如果它檢測到unicode,它會讓庫處理它,否則它自己做。有時檢測可能會失敗,在這種情況下,您可能希望設定'' use_native_unicode ''(或' SQLALCHEMY_NATIVE_UNICODE '配置“FALSE”鍵)。注意,配置鍵覆蓋將值傳遞給建構函式。 該類還提供對所有SQLAlchemy函式和類的訪問 來自: ' sqlalchemy '和: ' sqlalchemy '。orm的模組。所以你可以這樣宣告模型類使用者(db.Model): 使用者名稱= db.Column(db.String(80), unique=True) 您仍然可以使用:' sqlalchemy '和' sqlalchemy.orm',但注意Flask-SQLAlchemy定製只能通過類的例項:' SQLAlchemy '類。查詢類預設為類:“BaseQuery”的資料庫。查詢”、“db.Model。和預設query_class“db。關係”和“db.backref”。如果你用這些通過:mod: ' sqlalchemy '和:mod: ' sqlalchemy。orm的直接,預設的查詢類是:' sqlalchemy '。 .警告:仔細檢查型別 不要對“db”執行型別或“isinstance”檢查。表”, 模擬“表”行為,但不是類。db。表的暴露了 “表”介面,但它是一個允許遺漏元資料的函式。 “session_options”引數(如果提供的話)是引數的字典 要傳遞給會話建構函式。看到:類:“~ sqlalchemy.orm.session.Session” 用於標準選項。 . .versionadded::0.10 添加了' session_options '引數。 . .versionadded::0.16 “scopefunc”現在被“session_options”接受。它允許指定 自定義函式,它將定義SQLAlchemy會話的範圍。 . .versionadded::2.1 添加了“元資料”引數。這允許設定自定義 命名約定以及其他重要的事情。 . .versionadded::3.0 添加了“query_class”引數,以允許定製 替換:class: ' BaseQuery '的預設值。 添加了“model_class”引數,允許自定義模型 類用於代替:class: ' Model '。 . .versionchanged::3.0 跨“會話”、“模型”使用相同的查詢類。查詢”和“查詢”。 ”“” """