factory/apps/bi/services.py

25 lines
756 B
Python

from rest_framework.exceptions import ParseError
import json
from jinja2 import Template
forbidden_keywords = ["UPDATE", "DELETE", "DROP", "TRUNCATE"]
def check_sql_safe(sql: str):
"""检查sql安全性
"""
sql_upper = sql.upper()
for kw in forbidden_keywords:
if kw in sql_upper:
raise ParseError('sql查询有风险')
return sql
def format_json_with_placeholders(json_str, **kwargs):
formatted_json = json_str
# 遍历关键字参数,将占位符替换为对应的值
for key, value in kwargs.items():
formatted_json = formatted_json.replace("{" + key + "}", json.dumps(value))
# 格式化后的字符串依然是 JSON 字符串,没有使用 json.loads()
return formatted_json