You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt三个QListWidget关联SQLite存储看板任务保存失效问题

按日维度看板任务持久化实现方案

原有保存逻辑失效原因

你写的saveChanges方法无法正常持久化变更,核心问题有3个:

  • 仅覆盖了待办列表的状态更新,完全没有处理处理中、已完成两个列表的任务状态
  • 仅做了UPDATE操作:只能修改数据库中已存在的记录,用户右键新增的任务没有对应入库逻辑,被拖拽到其他列表、手动删除的任务也不会同步状态
  • 写法不规范:lista是整数字段,SQL语句里给0加单引号传字符串属于类型不匹配,虽然SQLite弱类型不会直接报错,但存在兼容隐患

程序界面示例
数据库表结构

单表结构正确实现

如果保留原有单表设计(字段为tarea存储任务内容、lista存储列表标识、fecha存储关联日期),最稳妥的保存逻辑是全量覆写当日数据,避免逐行更新漏判状态:

def saveChanges(self):
    db = sqlite3.connect("todo.db")
    cursor = db.cursor()
    selected_date = self.calendarWidget.selectedDate().toPython()
    # 先清空当前选中日期的所有旧任务,避免残留已删除/被拖拽走的无效数据
    cursor.execute("DELETE FROM tareas WHERE fecha = ?", (selected_date,))
    
    # 批量写入待办列表任务(标识0)
    for i in range(self.lista_pendientes.count()):
        task_content = self.lista_pendientes.item(i).text()
        cursor.execute(
            "INSERT INTO tareas (tarea, lista, fecha) VALUES (?, 0, ?)",
            (task_content, selected_date)
        )
    # 批量写入处理中列表任务(标识1)
    for i in range(self.lista_enprogreso.count()):
        task_content = self.lista_enprogreso.item(i).text()
        cursor.execute(
            "INSERT INTO tareas (tarea, lista, fecha) VALUES (?, 1, ?)",
            (task_content, selected_date)
        )
    # 批量写入已完成列表任务(标识2)
    for i in range(self.lista_completadas.count()):
        task_content = self.lista_completadas.item(i).text()
        cursor.execute(
            "INSERT INTO tareas (tarea, lista, fecha) VALUES (?, 2, ?)",
            (task_content, selected_date)
        )
    
    db.commit()
    db.close()

触发保存的时机需要覆盖所有数据变更场景:新增任务后、拖拽任务释放后、切换日历选中日期前、关闭窗口前,避免操作丢失。
原有加载任务的updateTaskList方法不需要改动,配合上面的保存逻辑可以正常运行。

简化实现方案(提问者最终验证可用)

如果觉得维护lista字段逻辑繁琐,可以直接拆分三张独立表分别存储三类任务,不需要额外维护列表标识字段:

  • 建pendientes表存储待办任务,字段设为自增id、tarea、fecha即可
  • 建en_progreso表存储处理中任务,字段结构和待办表一致
  • 建completadas表存储已完成任务,字段结构同上
    保存时只需要分别清空当日对应表的旧数据,再把对应列表的任务插入对应表即可,逻辑更直白,排查问题也更简单。

内容的提问来源于stack exchange,提问作者Antigona_curiosa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:39:20