sql_execute.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # coding=utf-8
  2. """
  3. @project: maxkb
  4. @Author:虎
  5. @file: sql_execute.py
  6. @date:2023/9/25 20:05
  7. @desc:
  8. """
  9. from typing import List
  10. from django.db import connection
  11. def sql_execute(sql: str, params):
  12. """
  13. 执行一条sql
  14. :param sql: 需要执行的sql
  15. :param params: sql参数
  16. :return: 执行结果
  17. """
  18. with connection.cursor() as cursor:
  19. cursor.execute(sql, params)
  20. columns = list(map(lambda d: d.name, cursor.description))
  21. res = cursor.fetchall()
  22. result = list(map(lambda row: dict(list(zip(columns, row))), res))
  23. cursor.close()
  24. return result
  25. def update_execute(sql: str, params):
  26. """
  27. 执行一条sql
  28. :param sql: 需要执行的sql
  29. :param params: sql参数
  30. :return: 执行结果
  31. """
  32. with connection.cursor() as cursor:
  33. cursor.execute(sql, params)
  34. affected_rows = cursor.rowcount
  35. cursor.close()
  36. return affected_rows
  37. def select_list(sql: str, params: List):
  38. """
  39. 执行sql 查询列表数据
  40. :param sql: 需要执行的sql
  41. :param params: sql的参数
  42. :return: 查询结果
  43. """
  44. result_list = sql_execute(sql, params)
  45. if result_list is None:
  46. return []
  47. return result_list
  48. def select_one(sql: str, params: List):
  49. """
  50. 执行sql 查询一条数据
  51. :param sql: 需要执行的sql
  52. :param params: 参数
  53. :return: 查询结果
  54. """
  55. result_list = sql_execute(sql, params)
  56. if result_list is None or len(result_list) == 0:
  57. return None
  58. return result_list[0]