Flask-SQLAlchemy 是一個Flask 擴展,簡化了在Flask 程序中使用SQLAlchemy 的操做。SQLAlchemy 是一個很強大的關係型數據庫框架,支持多種數據庫後臺。SQLAlchemy 提供了高層ORM,也提供了使用數據庫原生SQL 的低層功能。mysql
和其餘大多數擴展同樣,Flask-SQLAlchemy 也使用pip 安裝:sql
pip install flask-sqlalchemy
在Flask-SQLAlchemy 中,數據庫使用URL 指定。最流行的數據庫引擎採用的數據庫URL格式以下表:數據庫
MySQL | mysql://username:password@hostname/database |
Postgres | postgresql://username:password@hostname/database |
SQLite(Unix) | sqlite:////absolute/path/to/database |
SQLite(Windows) | sqlite:///c:/absolute/path/to/database |
在這些URL 中,hostname 表示MySQL 服務所在的主機,能夠是本地主機(localhost),也能夠是遠程服務器。數據庫服務器上能夠託管多個數據庫,所以database 表示要使用的數據庫名。若是數據庫須要進行認證,username 和password 表示數據庫用戶密令。flask
SQLite 數據庫不須要使用服務器,所以不用指定hostname、username 和password。URL 中的database 是硬盤上文件的文件名。服務器
程序使用的數據庫URL 必須保存到Flask 配置對象的SQLALCHEMY_DATABASE_URI 鍵中。配置對象中還有一個頗有用的選項,即SQLALCHEMY_COMMIT_ON_TEARDOWN 鍵,將其設爲True時,每次請求結束後都會自動提交數據庫中的變更。其餘配置選項的做用請參閱Flask-SQLAlchemy 的文檔。下面的例子展現瞭如何初始化及配置一個簡單的MySQL 數據庫app
from flask import Flask from flask.ext.script import Manager from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root@localhost:3306/test?charset=utf8mb4' app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True db = SQLAlchemy(app)
db 對象是SQLAlchemy 類的實例,表示程序使用的數據庫,同時還得到了Flask-SQLAlchemy提供的全部功能。框架