diff --git a/delete_deprecated_data.py b/delete_deprecated_data.py index 999e757..fb98d76 100644 --- a/delete_deprecated_data.py +++ b/delete_deprecated_data.py @@ -6,9 +6,9 @@ from db import MysqlSession from db.mysql import ZxPhhd, ZxIeCost, ZxIeDischarge, ZxIeResult, ZxIeSettlement, ZxPhrec from log import LOGGING_CONFIG -# 过期时间 -EXPIRATION_DAYS = 180 -# 批量删除数量 +# 过期时间(不建议小于1个月) +EXPIRATION_DAYS = 183 +# 批量删除数量(最好在1000~10000之间) BATCH_SIZE = 5000 # 数据库会话对象 session = None @@ -38,17 +38,27 @@ def batch_delete_by_pk_phhd(model, pk_phhds): if __name__ == '__main__': logging.config.dictConfig(LOGGING_CONFIG) deadline = datetime.now() - timedelta(days=EXPIRATION_DAYS) + double_deadline = deadline - timedelta(days=EXPIRATION_DAYS) session = MysqlSession() try: while 1: + # 已经走完所有流程的案子,超过过期时间后删除 phhds = (session.query(ZxPhhd.pk_phhd) .filter(ZxPhhd.paint_flag == "9") .filter(ZxPhhd.billdate < deadline) .limit(BATCH_SIZE) .all()) if not phhds or len(phhds) <= 0: - # 没有符合条件的数据,退出循环 - break + # 没有通过审核,可能会重拍补拍上传的案子,超过两倍过期时间后删除 + phhds = (session.query(ZxPhhd.pk_phhd) + .filter(ZxPhhd.exsuccess_flag == "9") + .filter(ZxPhhd.paint_flag == "0") + .filter(ZxPhhd.billdate < double_deadline) + .limit(BATCH_SIZE) + .all()) + if not phhds or len(phhds) <= 0: + # 没有符合条件的数据,退出循环 + break pk_phhd_values = [phhd.pk_phhd for phhd in phhds] logging.getLogger("sql").info(f"过期的pk_phhd有{','.join(map(str, pk_phhd_values))}") batch_delete_by_pk_phhd(ZxPhrec, pk_phhd_values)