大家好,我是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 表結構正確