首页 > 解决方案 > 仅当过去 4 小时内没有重复项时才插入表中

问题描述

我有两张桌子。BUYWALLDATA3 每次程序运行时都会被截断。

BUYWALL 是我想将插入 BUYWALLDATA3 的数据存储 4 小时的地方。

运行代码时,有时同一个 COINPAIR 有多个条目。但是一旦插入了这些条目,我不想在 4 小时内更新该 COINPAIR 的行。一旦这 4 个小时结束,我想再次更新这些条目。

这是因为我有另一个脚本可以在这 4 个小时内分析来自 BUYWALL 的数据。

任何想法如何做到这一点?

这是一个加密警报机器人。

sql = "INSERT INTO BUYWALLDATA3 (COINPAIR, BUYWALLPRICE, BUYWALLSIZEINBTC, volumethreshold, datetimeofinsert) VALUES (%s, %s, %s, %s, NOW())"
val = [
(whichmarket[f], var_element_check[0], sum_array_check, volume_threshold)
]

mycursor.executemany(sql, val)

cnx.commit()

print(mycursor.rowcount, "was inserted.")


sql = "INSERT IGNORE INTO BUYWALL (COINPAIR, BUYWALLPRICE, BUYWALLSIZEINBTC, volumethreshold, datetimeofinsert) VALUES (%s, %s, %s, %s, NOW()) "
val = [
(whichmarket[f], var_element_check[0], sum_array_check, volume_threshold)
]

mycursor.executemany(sql, val)

cnx.commit()

这是两个表的布局(它们都是相同的)

两个表的布局

标签: pythonmysqlmysql-connector

解决方案


您希望定期将其中一个表的内容备份到另一个具有相同结构的表中。最好始终保存到同一个唯一的表中。

您的源表有一个时间戳字段,可用于过滤记录。您似乎正在寻找基于时间间隔过滤数据的 WHERE 子句;那将是:

WHERE datetimeofinsert > DATE_SUB(NOW(), INTERVAL 4 HOUR)

推荐阅读