@app.route('/get_users') defget_users(): users = User.query.all() # 获取所有用户 return'<br>'.join([f'{user.username} ({user.email})'for user in users])
User.query.all():查询所有用户记录。
更新记录
1 2 3 4 5 6 7 8
@app.route('/update_user/<int:user_id>') defupdate_user(user_id): user = User.query.get(user_id) if user: user.username = '新名字' db.session.commit() return'User updated!' return'User not found!'
User.query.get(user_id):通过主键查询单个用户记录。
更新字段值并提交事务。
删除记录
1 2 3 4 5 6 7 8
@app.route('/delete_user/<int:user_id>') defdelete_user(user_id): user = User.query.get(user_id) if user: db.session.delete(user) db.session.commit() return'User deleted!' return'User not found!'
先输入个错误的2
输入正确的id,1
删除成功, 检查数据库表也删除了
恢复数据多添加几个User数据,报错了
1 2 3 4 5
IntegrityError sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.email [SQL: INSERT INTO user (username, email) VALUES (?, ?)] [parameters: ('john_doe', 'john@example.com')] (Background on this error at: https://sqlalche.me/e/20/gkpj)
@app.route('/query/<username>') defquery(username): print(f"username: {username}") user = User.query.filter_by(username=username).first() if user: returnf"User:{user.username} ({user.email})" return'User not found!'
app.py 复杂查询
1 2 3 4 5 6 7 8 9 10 11 12
... from sqlalchemy import or_ ...
@app.route('/query2/<username>/<email>') defquery2(username,email): print(f"username: {username}") print(f"email: {email}") user = User.query.filter(or_(User.username == username, User.email == email)).first() if user: returnf"User:{user.username} ({user.email})" return'User not found!'
app.py 排序与分页
1 2 3 4 5 6
@app.route('/query3') defquery3(): users = User.query.order_by(User.username).paginate(page=1, per_page=10) if users: return'<br>'.join([f'{user.username} ({user.email})'for user in users.items]) return'Users not found!'