如何在创建后10分钟后自动删除行

问题描述 投票:0回答:1

假设我创建一个数据库并使用以下代码添加所需的表、列:

import sqlite3

connection = sqlite3.connect("clients.db", check_same_thread=False)
cursor = connection.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS customers(user_id INT, user_name, dt_string)") 
cursor.execute("""INSERT INTO customers VALUES(?, ?. ?);""", (user_id, user_name, dt_string))
connection.commit()

现在我知道我可以使用此代码在输入时删除此行

cursor.execute("""DELETE FROM customers WHERE user_id=?;""", (user_id,) )
connection.commit()

如何等待一定时间才能删除此条目?我知道使用

time.sleep
threading
可以实现这一点,但我想知道是否还有其他方法。

python sqlite
1个回答
0
投票

如果您不想使用

time.sleep
删除表中的条目,您可以简单地使用此方法从数据库中删除该条目。

  1. 首先,在表中添加一个created_at列。我们将存储该行创建的时间戳。 (当您插入数据时,不要忘记在表中添加当前时间戳)。
cursor.execute("CREATE TABLE IF NOT EXISTS customers(user_id INT, user_name TEXT, dt_string TEXT, created_at INT)")
import time

# Get the current timestamp
enter code here
created_at = int(time.time())

# Insert the entry with the created_at timestamp
cursor.execute("INSERT INTO customers VALUES(?, ?, ?, ?);", (user_id, user_name, dt_string, created_at))
connection.commit()
  1. 现在您可以定期检查并删除已达到删除期限的行。因此,只需将
    deletion time period
    添加到
    created_at
    时间,如果它晚于当前时间,则需要删除该项目。为此,您可以简单地创建一个 cron 作业或后台任务调度程序(阅读有关 cron 作业的信息)。

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.