iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
Software Development

從開始到放棄的Flask系列 第 13

[Day 13] Flask SQLAlchemy (1) 如何建立資料庫

  • 分享至 

  • xImage
  •  

今天我們來練習看看Flask連接資料庫吧,由於Flask本身其實是不支援對資料庫直接做操作,所以我們要使用Flask-SQLAlchemy這個擴充套件,他是 Flask 框架的一個擴展,可以方便我們在Flask框架中方便操作資料庫,而且他可以支援常見的Mysql、PostgreSQL、Microsoft SQL Server、sqlite、Oracle等。

Flask SQLalchemy是什麼

Flask SQLAlchemy是在Flask應用程式中使用SQLAlchemy的推薦方式。它可以幫助我們:

  • 使用Python類別代表資料庫中的表格
  • 將Python對象轉換成SQL語句
  • 自動管理資料庫資源,如連接池、事務等
    與直接使用SQL語句相比,Flask SQLAlchemy提供了更高層次的資料庫抽象,可以增加我們的開發效率。

資料庫環境建立

首先我們要先在終端中輸入

pip install flask-sqlalchemy

https://ithelp.ithome.com.tw/upload/images/20230923/201592250p2qCbrQro.png

我們會這次會以使用sqlite為主,為了可以看到資料庫我目前是使用DB Browser for SQLite,點進去找到符合自己電腦的版本下載即可。
https://ithelp.ithome.com.tw/upload/images/20230923/20159225gmnLpIjMYi.png
下載完打開後有看到下面這個畫面就表示成功了喔
https://ithelp.ithome.com.tw/upload/images/20230923/2015922585w824wqbH.png

基本設定

接著我們來看怎麼做出一個簡單的資料庫

  1. 建立 Flask 應用實例
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()是一個應用上下文的範例,他可以確保在應用的不同部分可以訪問應用的上下文配置。

  1. 定義資料模型
    使用Flask SQLAlchemy,我們可以通過定義模型類,來表示資料庫中的表格:
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表示資料庫欄位的類型。

  • 常見的SQLAlchemy列選項
參數名字 說明
primary_key 設定是否為主鍵
unique 設定是否唯一
nullable 設定是否可以為空值
default 設定默認值
index 創建索引
  1. 運行程式
    我們將程式運行起來,可以看到在資料夾底下多了一個data.splite,接著透過我們下載好的DB Broswer查看資料庫
    https://ithelp.ithome.com.tw/upload/images/20230923/2015922528viCTbCIr.png
    找到資料夾底下的data.splite後可以注意到Database Structure底下的資料表,多了一個User
    https://ithelp.ithome.com.tw/upload/images/20230923/20159225NWWYnxO6W6.png
    點上面的Browse Data可以查看資料表內的結構
    https://ithelp.ithome.com.tw/upload/images/20230923/20159225QouXlcXccx.png

這樣我們就成功創建第一個資料庫了喔,今天就先到這邊吧,明天會延續今天的內容,繼續講資料庫。


上一篇
[Day 12] Flask Flash
下一篇
[Day 14] Flask SQLAlchemy (2) 資料庫的基本操作
系列文
從開始到放棄的Flask30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言