app.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. # -*- coding: utf-8 -*-
  2. from flask import Flask, jsonify, request, render_template
  3. from db_utils.data import *
  4. from db_utils.files import *
  5. from file_uploader import upload_file # 导入文件上传的函数
  6. # 初始化 Flask 应用
  7. app = Flask(__name__)
  8. # 初始化数据库和表
  9. #initialize_database()
  10. #initialize_table()
  11. # 初始化数据库和表
  12. #initialize_files_database()
  13. #initialize_files_table("filePath")
  14. @app.route('/')
  15. def home():
  16. return render_template('index.html')
  17. # 获取类别数据
  18. @app.route('/categories')
  19. def get_categories():
  20. rows = fetch_data('category')
  21. # 将查询结果格式化为字典列表
  22. category_list = [{"id": row[0], "categoryName": row[1]} for row in rows]
  23. print(category_list)
  24. # 返回 JSON 格式的数据
  25. return jsonify(category_list)
  26. @app.route('/category-data', methods=['GET'])
  27. def get_table():
  28. # 获取查询参数中的表名 (categoryName)
  29. category_name = request.args.get('categoryName')
  30. if not category_name:
  31. return jsonify({"error": "No categoryName provided"}), 400 # 如果没有提供表名,返回错误
  32. # 根据表名查询数据
  33. rows = fetch_data(category_name)
  34. if not rows:
  35. return jsonify({"error": f"No data found for table {category_name}"}), 404 # 如果没有找到数据,返回错误
  36. # 将查询结果格式化为字典列表
  37. category_list = [{"id": row[0], "categoryName": row[1], "url":row[2]} for row in rows]
  38. print(category_list)
  39. # 返回 JSON 格式的数据
  40. return jsonify(category_list)
  41. # 添加水果数据
  42. @app.route('/add_fruit', methods=['POST'])
  43. def add_fruit():
  44. data = request.json
  45. name = data.get('name')
  46. origin = data.get('origin')
  47. if not name or not origin:
  48. return jsonify({"error": "Missing name or origin"}), 400
  49. try:
  50. insert_data(name, origin)
  51. return jsonify({"message": f"Fruit {name} from {origin} added successfully!"}), 200
  52. except Exception as e:
  53. return jsonify({"error": str(e)}), 500
  54. # 获取所有水果数据
  55. @app.route('/fruits', methods=['GET'])
  56. def get_fruits():
  57. try:
  58. fruits = fetch_data()
  59. return jsonify({"fruits": fruits})
  60. except Exception as e:
  61. return jsonify({"error": str(e)}), 500
  62. @app.route('/delete_fruit', methods=['POST'])
  63. def delete_fruit():
  64. data = request.json
  65. name = data.get('name')
  66. if not name:
  67. return jsonify({"error": "Missing name"}), 400
  68. try:
  69. delete_data(name)
  70. return jsonify({"message": f"Fruit {name} deleted successfully!"}), 200
  71. except Exception as e:
  72. return jsonify({"error": str(e)}), 500
  73. # 上传文件接口
  74. @app.route('/upload', methods=['POST'])
  75. def upload():
  76. return upload_file() # 调用封装好的文件上传函数
  77. # 下载文件接口
  78. from flask import send_from_directory
  79. @app.route('/download/<filename>', methods=['GET'])
  80. def download_file(filename):
  81. # 强制下载文件
  82. return send_from_directory('../uploads', filename, as_attachment=True)
  83. # 运行 Flask 应用
  84. if __name__ == '__main__':
  85. app.run(host='0.0.0.0', port=5000, debug=True)