大家好,我是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>