使用 Python Flask 设计一张任务表,支持无限层级子任务

本文将使用 Python Flask 和 SQLAlchemy 设计一张任务表,实现对任务的创建、查询、以及无限层级子任务的管理。

数据库设计

可以使用关系型数据库来设计任务表,每个任务包含以下字段:

  • id: 任务的唯一标识,使用自增整数或 UUID 生成。
  • title: 任务的标题,使用字符串类型。
  • parent_id: 父任务的 id,用于表示任务的层级关系。根任务的 parent_id 为空。
  • create_time: 任务的创建时间,使用日期时间类型。
  • complete: 任务是否已完成,使用布尔类型。

SQLAlchemy 模型定义

可以使用 ORM (对象关系映射) 工具如 SQLAlchemy 来简化数据库操作。以下是一个示例的任务模型:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Task(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    parent_id = db.Column(db.Integer, db.ForeignKey('task.id'))
    create_time = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    complete = db.Column(db.Boolean, nullable=False, default=False)

    children = db.relationship('Task', backref=db.backref('parent', remote_side=[id]))

    def __repr__(self):
        return f'<Task {self.id}>'

Flask 应用初始化

在 Flask 应用中,需要进行数据库的初始化和创建表操作:

from flask import Flask
from datetime import datetime

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///tasks.db'
db.init_app(app)

with app.app_context():
    db.create_all()

任务操作 API

然后就可以在路由中使用任务表了,例如可以添加任务和查询任务:

from flask import request, jsonify

@app.route('/tasks', methods=['POST'])
def create_task():
    data = request.json
    title = data.get('title')
    parent_id = data.get('parent_id')

    task = Task(title=title, parent_id=parent_id)
    db.session.add(task)
    db.session.commit()

    return jsonify({'message': 'Task created.'})

@app.route('/tasks', methods=['GET'])
def get_tasks():
    tasks = Task.query.all()
    result = []
    for task in tasks:
        result.append({
            'id': task.id,
            'title': task.title,
            'parent_id': task.parent_id,
            'create_time': task.create_time,
            'complete': task.complete
        })
    return jsonify(result)

使用 API

这样就可以通过 API 来创建任务和查询任务了。可以通过指定 parent_id 来创建子任务,可以使用 GET /tasks 来获取所有任务的列表。

总结

本文介绍了使用 Python Flask 和 SQLAlchemy 设计一个支持无限层级子任务的数据库任务表,并提供了示例代码。您可以根据实际需求进行修改和扩展。

Python Flask 任务表设计:无限层级子任务管理

原文地址: https://www.cveoy.top/t/topic/peQj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录