使用Flask和MySQL创建Web接口

181 阅读3分钟

本文将介绍如何使用Flask框架和MySQL数据库创建Web接口。我们将创建一个简单的应用程序,该应用程序可以在数据库中对书籍信息进行增删改查,并以JSON格式返回给客户端。在开始之前,请确保已安装以下软件:

  1. Flask
  2. pymysql

接下来,我们需要创建一个Flask应用。Flask是一个轻量级的Web框架,它提供了许多有用的工具和功能,使得创建Web应用变得更加简单。以下是一个创建Flask应用的示例代码:

from flask import Flask, jsonify, request 
# 创建 Flask 应用 
app = Flask(__name__)

1. 连接到MySQL数据库

首先,我们需要连接到MySQL数据库。在Python中,我们可以使用pymysql库来连接MySQL数据库。以下是一个连接到MySQL数据库的示例代码:

import pymysql 
# 连接数据库 
connect = pymysql.connect( 
    host='127.0.0.1', 
    user='root', 
    password='123456', 
    port=3306, 
    database='javabook', 
    charset='utf8' )

2. 创建路由和视图函数

现在,我们将创建路由和视图函数来实现增删改查的接口。

2.1 查询书籍的路由和函数:

@app.route('/get_books', methods=['GET'])  
def get_books():  
    try:  
        # 获取查询参数  
        page = request.args.get('page', default=1, type=int)  
        per_page = request.args.get('per_page', default=10, type=int)  
  
        # 执行查询语句获取书籍信息,并进行分页处理  
        cursor.execute(f"SELECT * FROM book LIMIT {(page - 1) * per_page}, {per_page}")  
        results = cursor.fetchall()  
        total_pages = cursor.execute("SELECT COUNT(*) FROM book")  
        data = []  
        for row in results:  
            data.append({  
               'price': row[0],  
               'name': row[1],  
               'id': row[2]  
           })  
        return jsonify({'data': data, 'total_pages': total_pages})  
    except Exception as e:  
        return jsonify({'error': "str(e)"})

2.2 添加书籍的路由和函数:

@app.route('/add_book', methods=['POST'])  
def add_book():  
    # 从请求中获取数据  
    name = request.json.get('name')  
    price = request.json.get('price')  
    print(name)  
    # 检查书籍名称是否已存在  
    cursor.execute("SELECT * FROM book WHERE name = %s", name)  
    if cursor.fetchone() is not None:  
        return jsonify({'error': '书籍名称已存在'})  
    # 执行添加书籍的 SQL 语句  
    addsql = "INSERT INTO book (name, price) VALUES (%s, %s)"  
    cursor.execute(addsql, (name, price))  
    # 提交更改并返回成功消息  
    connect.commit()  
    return jsonify({'message': '添加书籍成功'})

2.3 删除书籍的路由和函数:

@app.route('/delete_book/<int:book_id>', methods=['GET'])  
def delete_book(book_id):  
try:  
    cursor.execute("DELETE FROM book WHERE id = %s", (book_id,))  
    connect.commit()  
    return jsonify({'message': '书籍删除成功'})  
except Exception as e:  
    return jsonify({'error': str(e)})

2.4 更新书籍的路由和函数:

@app.route('/update_book/<int:book_id>', methods=['PUT'])  
def update_book(book_id):  
    data = request.json  
    name = data.get('name')  
    price = data.get('price')  
    try:  
        cursor.execute("UPDATE book SET name = %s, price = %s WHERE id = %s", (name, price, book_id))  
        connect.commit()  
        return jsonify({'message': '书籍更新成功'})  
    except Exception as e:  
    return jsonify({'error': str(e)})  
# 主函数启动 Flask 应用  
if __name__ == '__main__':  
app.run()

3. 运行应用并测试接口

这将启动Flask应用并监听端口。现在,你可以通过浏览器或使用Postman等工具来测试接口。例如,你可以发送GET请求到http://localhost:5000/get_books来获取所有书籍列表。你也可以发送POST请求到http://localhost:5000/add_books来添加新书籍,发送DELETE请求到http://localhost:5000/delete_books/<int:book_id>来删除书籍,以及发送PUT请求到http://localhost:5000/updata_books/<int:book_id>来更新书籍信息。