You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
1.7 KiB

11 months ago
10 months ago
11 months ago
11 months ago
11 months ago
10 months ago
11 months ago
10 months ago
11 months ago
10 months ago
  1. import pymysql
  2. from fastapi import HTTPException, status
  3. DB_CONFIG = {
  4. "host": "111.229.38.129",
  5. "user": "root",
  6. "password": "zl981023",
  7. "database": "blogapi",
  8. "charset": "utf8mb4",
  9. "cursorclass": pymysql.cursors.DictCursor,
  10. }
  11. # 创建数据库连接
  12. def create_connection():
  13. return pymysql.connect(**DB_CONFIG)
  14. # 执行 SQL 查询
  15. def execute_query(query, params=None, fetchall=False):
  16. conn = create_connection()
  17. with conn.cursor() as cursor:
  18. cursor.execute(query, params)
  19. if fetchall:
  20. result = cursor.fetchall()
  21. else:
  22. result = cursor.fetchone()
  23. conn.commit()
  24. conn.close()
  25. return result
  26. # 查询单个数据
  27. def fetch_one(query, params=None):
  28. result = execute_query(query, params)
  29. return result if result else None
  30. # 查询所有数据
  31. def fetch_all(query, params=None, fetchall=True):
  32. return execute_query(query, params, fetchall)
  33. # 验证数据是否存在,不存在抛出异常
  34. def raise_if_not_found(item, message="Item not found"):
  35. if not item:
  36. raise HTTPException(
  37. status_code=status.HTTP_404_NOT_FOUND,
  38. detail=message
  39. )
  40. # 验证唯一,非唯一抛出异常
  41. def raise_if_exists(item, message="Item already exists"):
  42. if item:
  43. raise HTTPException(
  44. status_code=status.HTTP_400_BAD_REQUEST,
  45. detail=message
  46. )
  47. # 成功响应数据
  48. def response_success(data={}, message="data do success"):
  49. if not data:
  50. return {
  51. "status": status.HTTP_200_OK,
  52. "message": message,
  53. }
  54. else:
  55. return {
  56. "status": status.HTTP_200_OK,
  57. "message": message,
  58. "data": data
  59. }