今天我們來練習看看Flask連接資料庫吧,由於Flask本身其實是不支援對資料庫直接做操作,所以我們要使用Flask-SQLAlchemy這個擴充套件,他是 Flask 框架的一個擴展,可以方便我們在Flask框架中方便操作資料庫,而且他可以支援常見的Mysql、PostgreSQL、Microsoft SQL Server、sqlite、Oracle等。
Flask SQLAlchemy是在Flask應用程式中使用SQLAlchemy的推薦方式。它可以幫助我們:
首先我們要先在終端中輸入
pip install flask-sqlalchemy
我們會這次會以使用sqlite為主,為了可以看到資料庫我目前是使用DB Browser for SQLite,點進去找到符合自己電腦的版本下載即可。
下載完打開後有看到下面這個畫面就表示成功了喔
接著我們來看怎麼做出一個簡單的資料庫
from flask import Flask
from models import db
app = Flask(__name__)
app.py
2. 初始化資料庫
import os
# 取得目前文件資料夾路徑
base_dir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
# 設置sqlite檔案路徑
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + \
os.path.join(base_dir, 'data.sqlite')
db.init_app(app)
@app.route('/')
def index():
return 'Hello World!'
if __name__ == '__main__':
if not os.path.exists(os.path.join(base_dir, 'data.sqlite')):
with app.app_context():
db.create_all()
app.run(debug=True)
with.app.app_context()
是一個應用上下文的範例,他可以確保在應用的不同部分可以訪問應用的上下文配置。
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(db.Model):
__tablename__ = 'User'
id = db.Column('id', db.Integer, primary_key = True)
username = db.Column(db.String(100),unique=True)
password = db.Column(db.String(50))
mail = db.Column(db.String(200),unique=True)
這裡我們定義了一個User模型,它對應到資料庫中的User表。db.Column表示資料庫欄位的類型。
參數名字 | 說明 |
---|---|
primary_key | 設定是否為主鍵 |
unique | 設定是否唯一 |
nullable | 設定是否可以為空值 |
default | 設定默認值 |
index | 創建索引 |
data.splite
,接著透過我們下載好的DB Broswer
查看資料庫data.splite
後可以注意到Database Structure
底下的資料表,多了一個User
Browse Data
可以查看資料表內的結構這樣我們就成功創建第一個資料庫了喔,今天就先到這邊吧,明天會延續今天的內容,繼續講資料庫。