python flask-数据库基础(Flask-SQLAlchemy)-2

大家好,我是python网页后端flask的讲师geo

models.py 中定義一個 User 模型

from app import db

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)  # 自動遞增 ID
    username = db.Column(db.String(80), unique=True, nullable=False)  # 使用者名稱
    password = db.Column(db.String(120), nullable=False)  # 密碼
    email = db.Column(db.String(120), unique=True, nullable=True)  # 電子信箱

    def __repr__(self):
        return f'<User {self.username}>'
屬性 說明
db.Column 欄位的定義方式
Integer, String 資料型別
primary_key=True 設為主鍵
unique=True 不允許重複
nullable=False 不允許為空值

使用 db.create_all() 建立 SQLite 資料表

app.py

from flask import Flask , render_template
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# 資料庫設定:使用 SQLite(可換成 PostgreSQL, MySQL)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

# 初始化資料庫
db = SQLAlchemy(app)

# 稍後我們會導入 models
# from models import User

@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':

    from models import User
    with app.app_context():
        db.create_all()  # 建立所有模型對應的資料表

    app.run(debug=True)

練習任務

為 User 模型新增一個 created_at 欄位,預設為目前時間(提示:使用 datetime 模組)

repr() 方法中加入 email 一併顯示

使用 DB Browser 開啟 data.db,確認 user 表結構正確