1. 程式人生 > >深入研究Python-Flask原始碼:flask_sqlalchemy中SQLAlchemy(object)類

深入研究Python-Flask原始碼:flask_sqlalchemy中SQLAlchemy(object)類

小編從事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
跨“會話”、“模型”使用相同的查詢類。查詢”和“查詢”。
”“”
    """