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

如何在Python中利用Timestamp定时删除SQLite3的PRODUCT表指定数据?

实现SQLite3定时删除PRODUCT表数据的方案

嘿,我来帮你搞定在线竞价系统里的定时删除需求!咱们分几步来实现,用Python+SQLite3结合Timestamp和定时任务就能轻松搞定。

第一步:给PRODUCT表添加时间字段

首先,你需要给PRODUCT表加一个用于判断过期的时间字段——比如expires_at(产品过期时间)或者created_at(产品创建时间),这样才能明确哪些数据该被删除。如果表还没创建,直接在建表语句里加;如果已经建好了,用ALTER TABLE修改:

import sqlite3

# 连接数据库
conn = sqlite3.connect('your_bidding_system.db')
cursor = conn.cursor()

# 添加expires_at字段(默认设为当前时间加7天,你可以根据需求调整)
try:
    cursor.execute("ALTER TABLE PRODUCT ADD COLUMN expires_at TIMESTAMP DEFAULT DATETIME('now', '+7 days')")
    conn.commit()
    print("成功添加expires_at字段")
except sqlite3.OperationalError:
    # 如果字段已经存在,直接跳过
    print("expires_at字段已存在,无需重复添加")

# 关闭连接
conn.close()

第二步:编写删除过期数据的函数

接下来写一个专门的函数,用来清理符合条件的过期数据。这里用SQLite内置的CURRENT_TIMESTAMP获取当前时间,和expires_at字段做对比:

def delete_expired_products():
    conn = sqlite3.connect('your_bidding_system.db')
    cursor = conn.cursor()
    
    # 删除已过期的产品数据
    delete_query = """
        DELETE FROM PRODUCT 
        WHERE expires_at < CURRENT_TIMESTAMP
    """
    cursor.execute(delete_query)
    deleted_count = cursor.rowcount
    conn.commit()
    
    print(f"本次清理完成,共删除{deleted_count}条过期产品数据")
    conn.close()

如果你想按“创建后N天自动删除”的逻辑来,也可以把SQL语句改成这样:

DELETE FROM PRODUCT 
WHERE created_at < DATETIME('now', '-7 days') -- 删除7天前创建的产品

第三步:实现Python定时任务

轻量场景下最推荐用schedule库(先通过pip install schedule安装),语法简单易懂,能快速实现定时执行:

import schedule
import time

# 设置定时规则:比如每天凌晨2点执行清理任务
schedule.every().day.at("02:00").do(delete_expired_products)

# 测试阶段可以用更频繁的间隔,比如每1小时执行一次
# schedule.every(1).hours.do(delete_expired_products)

# 让定时任务持续运行
while True:
    schedule.run_pending()
    time.sleep(60)  # 每分钟检查一次是否有任务要执行

如果需要更复杂的定时规则(比如每月1号执行),可以换成APScheduler库,功能更强大,但schedule足够应付大部分简单场景了。

一些实用提醒

  • 要确保你的Python脚本是长期运行的(比如部署成后台服务),不然定时任务会随着脚本关闭而停止。
  • 建议给数据库操作加上异常捕获,避免因为临时的连接问题导致整个定时任务崩溃。
  • 生产环境里,删除前最好做数据备份,或者添加日志记录,方便后续排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:57:37