在Flask中实现对MySQL数据库的增删改查(CRUD)操作,通常需要使用一个数据库ORM(对象关系映射)库,如SQLAlchemy。下面是一个完整的示例,展示了如何在Flask中使用SQLAlchemy实现对MySQL数据库的CRUD操作。
1. 安装依赖首先,你需要安装Flask、Flask-SQLAlchemy和MySQL驱动程序(如mysqlclient或PyMySQL):
pip install Flask Flask-SQLAlchemy mysqlclient2. 配置Flask应用和数据库连接
创建一个新的Flask应用,并配置SQLAlchemy连接到MySQL数据库:
from flask import Flask, request, jsonify from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 配置数据库连接 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/db_name' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) # 定义数据库模型 class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self): return f'<User {self.name}>' # 创建数据库表 with app.app_context(): db.create_all()3. 实现CRUD操作
接下来,定义路由来处理增删改查操作:
创建(Create)@app.route('/users', methods=['POST']) def create_user(): data = request.get_json() new_user = User(name=data['name'], email=data['email']) db.session.add(new_user) db.session.commit() return jsonify({'message': 'User created successfully'}), 201读取(Read)
@app.route('/users', methods=['GET']) def get_users(): users = User.query.all() output = [] for user in users: user_data = {'id': user.id, 'name': user.name, 'email': user.email} output.append(user_data) return jsonify({'users': output}) @app.route('/users/<id>', methods=['GET']) def get_user(id): user = User.query.get_or_404(id) return jsonify({'id': user.id, 'name': user.name, 'email': user.email})更新(Update)
@app.route('/users/<id>', methods=['PUT']) def update_user(id): data = request.get_json() user = User.query.get_or_404(id) user.name = data['name'] user.email = data['email'] db.session.commit() return jsonify({'message': 'User updated successfully'})删除(Delete)
@app.route('/users/<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 successfully'})4. 运行应用
最后,添加运行Flask应用的代码:
if __name__ == '__main__': app.run(debug=True)完整代码
from flask import Flask, request, jsonify from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 配置数据库连接 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/db_name' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) # 定义数据库模型 class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self): return f'<User {self.name}>' # 创建数据库表 with app.app_context(): db.create_all() @app.route('/users', methods=['POST']) def create_user(): data = request.get_json() new_user = User(name=data['name'], email=data['email']) db.session.add(new_user) db.session.commit() return jsonify({'message': 'User created successfully'}), 201 @app.route('/users', methods=['GET']) def get_users(): users = User.query.all() output = [] for user in users: user_data = {'id': user.id, 'name': user.name, 'email': user.email} output.append(user_data) return jsonify({'users': output}) @app.route('/users/<id>', methods=['GET']) def get_user(id): user = User.query.get_or_404(id) return jsonify({'id': user.id, 'name': user.name, 'email': user.email}) @app.route('/users/<id>', methods=['PUT']) def update_user(id): data = request.get_json() user = User.query.get_or_404(id) user.name = data['name'] user.email = data['email'] db.session.commit() return jsonify({'message': 'User updated successfully'}) @app.route('/users/<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 successfully'}) if __name__ == '__main__': app.run(debug=True)总结
通过上述步骤,你已经成功地在Flask中实现了对MySQL数据库的CRUD操作。这个示例展示了如何配置数据库连接、定义模型、创建数据库表以及实现增删改查的API端点。
网友回复
python如何调用openai的api实现知识讲解类动画讲解视频的合成?
html如何直接调用openai的api实现海报可视化设计及文本描述生成可编辑海报?
f12前端调试如何找出按钮点击事件触发的那段代码进行调试?
abcjs如何将曲谱播放后导出mid和wav格式音频下载?
python如何将曲子文本生成音乐mp3或wav、mid文件
python中mp3、wav音乐如何转成mid格式?
js在HTML中如何将曲谱生成音乐在线播放并下载本地?
python如何实现在windows上通过键盘来模拟鼠标操作?
python如何给win10电脑增加文件或文件夹右键自定义菜单?
python如何将音乐mp3文件解析获取曲调数据?