使用Python和MySQL创建RESTful API

576 阅读4分钟

RESTFul API是网络开发的一个先进概念,它在服务器上实现并使用HTTP方法 (GET/ POST/ PUT/ DELETE)来处理数据。HTTP请求方法和资源使用URI识别,并相应地处理功能。

如果你正在考虑实现Python RESTful API,那么你就来对地方了。在本教程中,你将学习如何使用MYSQL创建Python RESTFul API

我们将用HTTP方法 (GET/POST/PUT/DELETE)来实现带有CRUD操作的Python RESTFul API的实例来介绍这个教程。

我们希望你已经在你的Windows或Linux中安装了Python及其软件包。这里我们使用的是Python 3.10.4版本。我们将使用flask,flask-mysqlflask-cors 模块。

所以让我们使用Python和MySQL创建RESTful API。我们有项目目录restful-api-python ,主要的文件有。

  • config.py
  • app.py
  • main.py

步骤1:创建MySQL数据库表

由于我们将实现RESTful API来执行CRUD操作,所以我们将创建MySQL数据库表emp 来执行操作。因此,首先我们将创建MySQL数据库rest-api ,然后使用下面的表创建语句创建表emp

CREATE TABLE `emp` (
  `id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(16) DEFAULT NULL,
  `address` text DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `emp`
  ADD PRIMARY KEY (`id`);
  
ALTER TABLE `emp`
 MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

第二步:导入Flask模块

由于我们使用FlaskMySQL 来处理REST API功能,所以我们需要这两个模块。Flask 模块作为Web框架工作,而MySQL 模块需要与MySQL数据库建立连接。

因此,首先我们将创建项目目录restful-api-python ,并使用cd 命令移动到里面。

然后,我们将通过运行下面的命令安装flask 模块。

pip install Flask

我们还将安装flask-cors 扩展,以处理跨源资源共享(CORS),使跨源成为可能。

pip install -U flask-cors

So now we will create the app.py Python script and import the flask module and create the flask instance to use with MySQL module. We will also import code>flask-cors跨来源的扩展。

from flask import Flask
from flask_cors import CORS, cross_origin

app = Flask(__name__)
CORS(app)

步骤3:创建MySQL连接

我们需要安装Flask-MySQL 扩展,允许你访问MySQL数据库。我们将使用以下命令安装Flask-MySQL 扩展。

pip install flask-mysql

我们将创建config.py Python文件来初始化MySQL数据库的连接细节,以便与MySQL数据库建立连接。我们将导入app 脚本,用Flask-MySQL 模块处理MySQL数据库连接。

由于我们已经创建了MySQL数据库rest-api ,所以我们将通过提供连接细节进行连接。

from app import app
from flaskext.mysql import MySQL

mysql = MySQL()
app.config['MYSQL_DATABASE_USER'] = 'root'
app.config['MYSQL_DATABASE_PASSWORD'] = ''
app.config['MYSQL_DATABASE_DB'] = 'rest-api'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
mysql.init_app(app)

第四步:创建REST API CRUD操作

我们将创建main.py 脚本并导入appconfig 模块。我们将连接到MySQL数据库,并通过定义所有的REST URIs实现CRUD操作。

在这里,我们使用POST HTTP方法来创建新的员工记录到MySQL数据库。我们使用GET HTTP方法来获取所有员工记录或个人记录,并使用PUT HTTP方法来更新员工记录。还实现了DELETE HTTP方法来删除记录。如果没有找到记录,则定义404方法来处理未找到的错误。

import pymysql
from app import app
from config import mysql
from flask import jsonify
from flask import flash, request

@app.route('/create', methods=['POST'])
def create_emp():
    try:        
        _json = request.json
        _name = _json['name']
        _email = _json['email']
        _phone = _json['phone']
        _address = _json['address']	
        if _name and _email and _phone and _address and request.method == 'POST':
            conn = mysql.connect()
            cursor = conn.cursor(pymysql.cursors.DictCursor)		
            sqlQuery = "INSERT INTO emp(name, email, phone, address) VALUES(%s, %s, %s, %s)"
            bindData = (_name, _email, _phone, _address)            
            cursor.execute(sqlQuery, bindData)
            conn.commit()
            respone = jsonify('Employee added successfully!')
            respone.status_code = 200
            return respone
        else:
            return showMessage()
    except Exception as e:
        print(e)
    finally:
        cursor.close() 
        conn.close()          
     
@app.route('/emp')
def emp():
    try:
        conn = mysql.connect()
        cursor = conn.cursor(pymysql.cursors.DictCursor)
        cursor.execute("SELECT id, name, email, phone, address FROM emp")
        empRows = cursor.fetchall()
        respone = jsonify(empRows)
        respone.status_code = 200
        return respone
    except Exception as e:
        print(e)
    finally:
        cursor.close() 
        conn.close()  

@app.route('/emp/

第五步:运行应用程序

现在我们将进入项目目录restful-api-python ,执行命令python main.py ,服务器将在默认的5000端口启动。现在我们将使用Postman 来运行我们的Python RESTful API,用**(POST、GET、PUT或DELETE**)方法来测试它。

我们将用HTTPGET 方法运行下面的URL,以获得所有的雇员,并以JSON格式显示数据。

http://localhost:5000/emp

下面的JSON数据响应将被返回。

我们将使用下面的URL和HTTP方法GET ,得到JSON数据中的雇员记录,ID为1。

http://localhost:5000/emp/1

响应将是JSON数据。

我们将用POST HTTP方法创建新的雇员记录。

http://localhost:5000/create

请求体将是以下内容。

响应将是JSON数据的雇员添加信息。

我们将使用PUT HTTP方法更新现有的雇员记录#1。

http://localhost:5000/update

请求主体将如下。

响应将是雇员记录更新信息。

我们将使用DELETE HTTP方法删除现有的3号雇员记录。

http://localhost:5000/delete/4

响应将是雇员记录的删除信息。

你已经完成了关于使用Flask和MySQL的Python RESTFul API的教程和例子。你可以根据你的要求在你的项目中进一步实现这一点。如果你有任何疑问,你可以提交你的宝贵意见。谢谢!