python学习笔记(四)—flask篇

在使用 Flask 进行 Web 后端开发时,我们可以利用其简洁的框架和丰富的扩展库来构建高性能的 Web 应用程序。本笔记将介绍如何使用 Flask 进行项目构建、接口定义以及数据库操作,并提供一些示例代码。

项目构建

  1. 创建项目目录和虚拟环境:

    $ mkdir myapp
    $ cd myapp
    $ python3 -m venv venv
    $ source venv/bin/activate
    
    
  2. 安装 Flask 和相关扩展库:

    $ pip install flask flask_sqlalchemy
    
    
  3. 创建 Flask 应用并配置数据库:

    # app.py
    from flask import Flask, request, jsonify, abort
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/mydatabase'  # 根据实际情况修改数据库配置
    db = SQLAlchemy(app)
    
    # 数据库模型定义
    class Student(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(100), nullable=False)
        gender = db.Column(db.String(10), nullable=False)
        student_number = db.Column(db.String(20), nullable=False, unique=True)
    
    # 添加学生数据
    @app.route('/students', methods=['POST'])
    def create_student():
        data = request.get_json()
    
        if not data.get('name') or not data.get('gender') or not data.get('student_number'):
            abort(400, 'Missing required fields')
    
        student = Student(name=data['name'], gender=data['gender'], student_number=data['student_number'])
        db.session.add(student)
        db.session.commit()
    
        return 'Student created successfully'
    
    # 查询学生数据
    @app.route('/students', methods=['GET'])
    def get_students():
        students = Student.query.all()
    
        student_list = []
        for student in students:
            student_data = {
                'id': student.id,
                'name': student.name,
                'gender': student.gender,
                'student_number': student.student_number
            }
            student_list.append(student_data)
    
        return jsonify(student_list)
    
    # 根据学号删除学生数据
    @app.route('/students/', methods=['DELETE'])
    def delete_student(student_number):
        student = Student.query.filter_by(student_number=student_number).first()
        if not student:
            abort(404, 'Student not found')
    
        db.session.delete(student)
        db.session.commit()
    
        return 'Student deleted successfully'
    
    # 修改学生姓名和性别
    @app.route('/students/', methods=['PUT'])
    def update_student(student_number):
        data = request.get_json()
    
        student = Student.query.filter_by(student_number=student_number).first()
        if not student:
            abort(404, 'Student not found')
    
        student.name = data['name']
        student.gender = data['gender']
        db.session.commit()
    
        return 'Student updated successfully'
    
    # 错误处理示例
    @app.errorhandler(400)
    def handle_bad_request(error):
        return 'Bad Request', 400
    
    @app.errorhandler(404)
    def handle_not_found(error):
        return 'Not Found', 404
    
    @app.errorhandler(500)
    def handle_server_error(error):
        return 'Internal Server Error', 500
    
    # 数据库初始化
    @app.before_first_request
    def create_tables():
        db.create_all()
    
    # 运行应用
    if __name__ == '__main__':
        app.run()
    
    

项目运行和部署

  1. 在开发环境中运行项目:

    $ export FLASK_APP=app.py
    $ export FLASK_ENV=development
    $ flask run
    
    
  2. 在生产环境中部署项目:

    • 使用 WSGI 服务器(如 Gunicorn、uWSGI)来运行 Flask 应用
    • 使用 Nginx 或 Apache 配置反向代理,提供静态文件服务和负载均衡

请根据具体的项目需求和部署环境进行调整和优化,例如添加数据验证、异常处理、安全性控制等功能,以提高项目的稳定性和安全性。

你可能感兴趣的:(python,学习笔记,python,flask,学习)