python flask增删改查项目
时间: 2025-04-16 20:47:46 浏览: 37
### 使用Python Flask实现CRUD操作
为了创建一个具有增删改查(CRUD)功能的Python Flask项目,可以按照以下方法构建应用程序。
#### 安装依赖库
首先安装必要的包,包括`flask`和用于连接MySQL数据库的驱动程序。可以通过pip工具完成这些软件包的安装:
```bash
pip install flask pymysql flask_sqlalchemy
```
#### 配置Flask应用与数据库连接
定义配置类来设置SQLAlchemy使用的数据库URI和其他选项。通常情况下,这部分代码位于项目的入口文件(app.py)顶部附近的位置[^1]。
```python
from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 设置数据库链接地址
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://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)
username = db.Column(db.String(80), unique=True, nullable=False)
password = db.Column(db.String(120), nullable=False)
def __repr__(self):
return '<User %r>' % self.username
@app.before_first_request
def create_tables():
db.create_all()
```
这段脚本初始化了一个新的Flask实例,并通过`SQLAlchemy`扩展设置了数据库模型以及表结构。这里假设已经有一个名为`db_name`的MySQL数据库存在,并且有相应的用户名(`username`)和密码(`password`)可用于访问它。
#### 增加记录 (Create)
向数据库中插入新条目涉及到创建一个新的ORM对象并将其实例化后的结果提交给会话(session),最后调用commit()函数使更改生效[^4]。
```python
@app.route('/user/add', methods=['POST'])
def add_user():
data = request.get_json()
new_user = User(
username=data["username"],
password=data["password"]
)
try:
db.session.add(new_user)
db.session.commit()
response = {"message": f"user {new_user.id} has been created successfully."}
except Exception as e:
response = {"message": str(e)}
finally:
return jsonify(response)
```
此API端点接受JSON格式的数据作为输入参数,其中包含了要添加的新用户的名称和密码字段。如果成功,则返回确认消息;如果有任何错误发生,则捕获异常并向客户端发送详细的报错信息。
#### 查询记录 (Read/Retrieve)
读取特定ID对应的用户资料或获取所有用户的列表都属于检索操作的一部分。下面展示了两种不同的方式来处理这类请求:
单个用户查询:
```python
@app.route("/user/<int:user_id>", methods=["GET"])
def get_user(user_id):
user = User.query.filter_by(id=user_id).first_or_404(description='Record not found.')
return {
"id": user.id,
"username": user.username,
"password": user.password
}
```
全部用户查询:
```python
@app.route("/users", methods=["GET"])
def list_users():
users = [{"id": u.id, "username": u.username, "password": u.password} for u in User.query.all()]
return jsonify(users=users)
```
这两种情况分别实现了基于唯一标识符查找单一实体的功能以及遍历整个集合的能力。
#### 更新现有记录 (Update)
当需要修改已存在的资源属性时,应该先定位目标项,接着更新其属性值后再执行保存动作。以下是具体做法的一个例子:
```python
@app.route("/user/update/<int:user_id>", methods=["PUT"])
def update_user(user_id):
data = request.get_json()
user_to_update = User.query.filter_by(id=user_id).first_or_404(description='Record not found.')
if "username" in data.keys():
user_to_update.username = data["username"]
if "password" in data.keys():
user_to_update.password = data["password"]
try:
db.session.commit()
response = {"message": f"user {user_id} updated"}
except Exception as ex:
response = {"error": str(ex)}
return jsonify(response=response)
```
上述逻辑允许部分更新——即只传递那些想要变更的信息即可。
#### 删除指定记录 (Delete)
最后一个基本的操作就是移除不再需要的数据行。这一步骤相对简单得多,只需找到对应的目标并将其从当前事务上下文中删除掉就可以了。
```python
@app.route("/user/delete/<int:user_id>", methods=["DELETE"])
def delete_user(user_id):
target_user = User.query.filter_by(id=user_id).first_or_404(description='Record not found.')
try:
db.session.delete(target_user)
db.session.commit()
response = {'message': f'user with ID={user_id} deleted'}
except Exception as err:
response = {'error': str(err)}
return jsonify(response=response)
```
至此为止,完整的CRUD接口就已经搭建完毕了。现在可以根据实际需求进一步优化和完善这个基础版本的应用程序。
阅读全文
相关推荐




















