在本节中,我们将通过一个具体的案例来学习如何在 Flask 中实现基本的 CRUD
(创建、读取、更新、删除)操作。我们将以一个简单的用户管理系统为例。
创建 Flask 项目 首先,确保你已经安装了 Flask,可以使用以下命令安装:
1 pip install Flask Flask-SQLAlchemy
接下来,创建一个新的 Flask 项目目录,并在该目录下创建一个 app.py
文件。
1 2 3 mkdir flask_crudcd flask_crudtouch app.py
在 app.py
中写入以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 from flask import Flask, request, jsonifyfrom flask_sqlalchemy import SQLAlchemyapp = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI' ] = 'sqlite:///users.db' db = SQLAlchemy(app) class User (db.Model): id = db.Column(db.Integer, primary_key=True ) name = db.Column(db.String(80 ), nullable=False ) age = db.Column(db.Integer, nullable=False ) db.create_all()
创建用户(Create) 接下来,我们添加一个路由来处理用户的创建。通过 POST
请求可以创建新的用户。
1 2 3 4 5 6 7 @app.route('/users' , methods=['POST' ] ) def create_user (): data = request.json new_user = User(name=data['name' ], age=data['age' ]) db.session.add(new_user) db.session.commit() return jsonify({'id' : new_user.id , 'name' : new_user.name, 'age' : new_user.age}), 201
测试创建用户 使用 curl
或 Postman 测试创建用户的功能:
1 curl -X POST http://127.0.0.1:5000/users -H "Content-Type: application/json" -d '{"name": "Alice", "age": 25}'
读取用户(Read) 现在,添加一个路由来获取用户信息。我们可以用 GET
请求来读取所有用户的信息。
1 2 3 4 @app.route('/users' , methods=['GET' ] ) def get_users (): users = User.query.all () return jsonify([{'id' : user.id , 'name' : user.name, 'age' : user.age} for user in users]), 200
测试读取用户 使用以下命令获取所有用户:
1 curl http://127.0.0.1:5000/users
更新用户(Update) 要更新用户的信息,我们需要添加一个新的路由,支持 PUT
请求。
1 2 3 4 5 6 7 8 @app.route('/users/<int:id>' , methods=['PUT' ] ) def update_user (id ): data = request.json user = User.query.get_or_404(id ) user.name = data['name' ] user.age = data['age' ] db.session.commit() return jsonify({'id' : user.id , 'name' : user.name, 'age' : user.age}), 200
测试更新用户 你可以使用以下命令更新用户的信息:
1 curl -X PUT http://127.0.0.1:5000/users/1 -H "Content-Type: application/json" -d '{"name": "Alice Updated", "age": 26}'
删除用户(Delete) 最后,我们需要一个路由来处理用户的删除。通过 DELETE
请求可以删除特定的用户。
1 2 3 4 5 6 @app.route('/users/<int:id>' , methods=['DELETE' ] ) def delete_user (id ): user = User.query.get_or_404(id ) db.session.delete(user) db.session.commit() return jsonify({'message' : 'User deleted' }), 204
测试删除用户 使用以下命令来删除用户:
1 curl -X DELETE http://127.0.0.1:5000/users/1
启动 Flask 应用 在文件的末尾添加以下代码以启动 Flask 应用:
1 2 if __name__ == '__main__' : app.run(debug=True )
总结 在本节中,我们创建了一个简单的 Flask 应用,成功实现了 CRUD
操作。通过这个案例,我们学习如何使用 Flask 提供的路由,处理请求和与 SQLite 数据库进行交互。你可以根据需求扩展这个应用,增加更多功能和复杂性。