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

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

现在插入数据和修改User资料栏位

models.py

from flask_sqlalchemy import SQLAlchemy
from datetime import datetime  # 加入這行

db = SQLAlchemy()  # 不要綁 app

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    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)

    # 新增時間欄位:自動儲存建立時間
    created_at = db.Column(db.DateTime, default=datetime.utcnow)

    def __repr__(self):
        return f'<User {self.username} | {self.email}>'
from flask import Flask , render_template
# from flask_sqlalchemy import SQLAlchemy

from datetime import datetime
app = Flask(__name__)

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

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

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

if __name__ == '__main__':

    from models import db, User

    # 初始化資料庫
    db.init_app(app)

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

        if not User.query.filter_by(username="jack").first():
            user = User(
                username="jack",
                password="1234",
                email="jack111@example.com",
                created_at=datetime.utcnow()
            )
            db.session.add(user)
            db.session.commit()
            print("使用者 jack 已插入")
        else:
            print("使用者 jack 已存在")

        users = User.query.all()
        print(users)

    app.run(debug=True)
使用者 jack 已存在
[<User jack | jack@example.com>]

如何在网页显示数据?

@app.route('/users')
def show_users():
    users = User.query.all()  # 查询全部用户
    return render_template('users.html', users=users)
<tbody>
    
</tbody>