Your cart is currently empty!
在 Python Web 開發中,Flask 因其輕量且靈活的特性深受開發者喜愛。而 SQLAlchemy 是 Flask 常用的 ORM(Object-Relational Mapping),可以幫助我們更方便地操作資料庫。本篇文章將帶你從零開始,使用 Flask + SQLAlchemy 打造一個簡單的 資料庫驅動應用,並學習 基本的 CRUD 操作。
1. 安裝 Flask 與 SQLAlchemy
首先,我們需要安裝 Flask 以及 Flask-SQLAlchemy:
pip install flask flask-sqlalchemy
2. 建立 Flask 應用
創建一個 app.py 作為 Flask 應用的主入口:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 設定資料庫 URI(這裡使用 SQLite 作為示範)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 初始化 SQLAlchemy
db = SQLAlchemy(app)
這段程式碼:
• 設定 Flask 應用
• 指定 SQLAlchemy 的資料庫 URI
• 關閉 SQLAlchemy 的事件追蹤(提升效能)
• 初始化 SQLAlchemy
3. 定義資料模型
在 SQLAlchemy 中,資料表是以 Python 類別(Class) 來表示的,以下是 User 資料表的模型:
class User(db.Model):
id = db.Column(db.Integer, primary_key=True) # 自動遞增的主鍵
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
def __repr__(self):
return f'<User {self.username}>'
這裡:
• id 是主鍵,會自動遞增
• username 和 email 為 String 類型,且必須唯一
• __repr__ 方法 讓 User 物件在列印時能顯示易讀的名稱
4. 建立資料庫
在 Flask 互動模式(或直接執行 Python 腳本)中執行以下程式碼來創建資料庫:
from app import db
db.create_all()
這會根據我們的 User 模型,在 users.db 中建立對應的表結構。
5. 插入資料
我們可以使用 db.session.add() 來新增資料:
from app import db, User
# 創建新用戶
new_user = User(username="Alice", email="alice@example.com")
# 將用戶加入 session 並提交
db.session.add(new_user)
db.session.commit()
這段程式碼:
• 創建了一個 User 物件
• 加入 db.session 來追蹤變更
• db.session.commit() 確保變更儲存到資料庫
6. 查詢資料
使用 SQLAlchemy 提供的查詢方法:
# 取得所有用戶
users = User.query.all()
print(users)
# 查詢特定用戶
alice = User.query.filter_by(username="Alice").first()
print(alice)
這裡:
• User.query.all() 會回傳所有 User 記錄
• User.query.filter_by(username=”Alice”).first() 取得第一個符合條件的 User
7. 更新資料
alice = User.query.filter_by(username="Alice").first()
alice.email = "newalice@example.com"
db.session.commit()
這樣就能更新 Alice 的 email。
8. 刪除資料
user_to_delete = User.query.filter_by(username="Alice").first()
db.session.delete(user_to_delete)
db.session.commit()
這會刪除 Alice,並將變更寫入資料庫。
9. 加入 Flask 路由
現在我們讓 Flask 提供 RESTful API 來管理 User:
from flask import request, jsonify
@app.route('/users', methods=['GET'])
def get_users():
users = User.query.all()
return jsonify([{"id": user.id, "username": user.username, "email": user.email} for user in users])
@app.route('/user', methods=['POST'])
def add_user():
data = request.json
new_user = User(username=data['username'], email=data['email'])
db.session.add(new_user)
db.session.commit()
return jsonify({"message": "User created!"}), 201
這段程式碼:
• GET /users:回傳所有用戶的 JSON 格式
• POST /user:從 JSON 請求中取得 username 和 email,然後新增用戶
10. 啟動 Flask 應用
if __name__ == '__main__':
app.run(debug=True)
執行:
python app.py
結語
透過本篇文章,我們學到了:
✅ 如何 建立 Flask 應用
✅ 如何 使用 SQLAlchemy 定義資料模型
✅ 如何 執行 CRUD 操作(新增、查詢、更新、刪除)
✅ 如何 建立 Flask API 來提供資料存取
下一步? 你可以嘗試:
• 使用 SQLite 以外的資料庫(如 MySQL 或 PostgreSQL)
• 實作使用者驗證(Flask-JWT)
• 加入前端(如 Vue.js / React)讓 Flask 提供 API 給前端使用
希望這篇文章能幫助你快速上手 Flask + SQLAlchemy!