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.

88 lines
2.1 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
9 months ago
11 months ago
9 months ago
11 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 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,lastrowid=False):
  16. conn = create_connection()
  17. with conn.cursor() as cursor:
  18. cursor.execute(query, params)
  19. if fetchall:
  20. result = cursor.fetchall()
  21. elif lastrowid:
  22. result = cursor.lastrowid
  23. else:
  24. result = cursor.fetchone()
  25. conn.commit()
  26. conn.close()
  27. return result
  28. # 查询单个数据
  29. def fetch_one(query, params=None):
  30. result = execute_query(query, params)
  31. return result if result else None
  32. # 查询所有数据
  33. def fetch_all(query, params=None, fetchall=True):
  34. return execute_query(query, params, fetchall)
  35. # 验证数据是否存在,不存在抛出异常
  36. def raise_if_not_found(item, message="Item not found"):
  37. if not item:
  38. raise HTTPException(
  39. status_code=status.HTTP_404_NOT_FOUND,
  40. detail=message
  41. )
  42. # 验证唯一,非唯一抛出异常
  43. def raise_if_exists(item, message="Item already exists"):
  44. if item:
  45. raise HTTPException(
  46. status_code=status.HTTP_400_BAD_REQUEST,
  47. detail=message
  48. )
  49. # 成功响应数据
  50. def response_success(data={}, message="data do success"):
  51. if data is None:
  52. # 如果 data 未传递,返回无 data 的响应
  53. return {
  54. "status": status.HTTP_200_OK,
  55. "message": message,
  56. }
  57. elif not data:
  58. # 如果 data 传递了但是为空,返回空列表作为 data 的响应
  59. return {
  60. "status": status.HTTP_200_OK,
  61. "message": message,
  62. "data": []
  63. }
  64. else:
  65. # 如果 data 非空,返回包含 data 的响应
  66. return {
  67. "status": status.HTTP_200_OK,
  68. "message": message,
  69. "data": data
  70. }