placeholder_func.py 970 B

12345678910111213141516171819202122232425262728293031323334353637
  1. # -*- coding: utf-8 -*-
  2. """
  3. @author: yq
  4. @time: 2024/11/8
  5. @desc: 处理占位符的函数
  6. """
  7. import datetime
  8. import re
  9. import pytz
  10. def get_date(offset: int = 0) -> str:
  11. current_date = datetime.datetime.now(pytz.timezone("Asia/Shanghai")).date() + datetime.timedelta(days=offset)
  12. return current_date.strftime("%Y-%m-%d")
  13. def _fill_date_placeholder(sql: str):
  14. date_placeholder = re.findall(r"{{date.*?}}", sql)
  15. if date_placeholder:
  16. date_placeholder = date_placeholder[0]
  17. offset = date_placeholder.replace("{{date", "").replace("}}", "")
  18. if len(offset) > 0:
  19. symbol = offset[0:1]
  20. offset = int(offset[1:])
  21. if "-" == symbol:
  22. offset = -offset
  23. else:
  24. offset = 0
  25. date_new = get_date(offset)
  26. sql = sql.replace(date_placeholder, repr(date_new))
  27. return sql
  28. def f_fill_placeholder(sql: str):
  29. sql = _fill_date_placeholder(sql)
  30. return sql