在开发过程中,难免要用到后台服务器进行数据的存取,使用Python Flask能快速搭建一个简单的本地后台服务,与本地Mysql进行数据交互。

项目目录:

(创建如图红框的三个文件,路径可不同,只要最后能导入其余文件即可)

python架设apache服务器 python搭建api服务器_flask


config.py文件是用来进行mysql配置的,内容如下

# MySQL配置
MYSQL_HOST = "127.0.0.1"  # 表示本地的地址
MYSQL_PORT = 3306    # 端口号
MYSQL_USER = "root"   # mysql用户名(需自行修改!!!)
MYSQL_PASSWD = "sjh666"  # mysql密码(需自行修改!!!)
MYSQL_DB = "android"  # mysql中创建的数据库名称(需自行修改!!!)

mysql_operate.py文件是对数据库进行的操作,内容如下

# 需导入pymysql,自行下载包
import pymysql

# 导入config包中导入config,py文件中对数据库进行的配置
from config.config import MYSQL_HOST,MYSQL_PORT,MYSQL_USER,MYSQL_PASSWD,MYSQL_DB

class MysqlDb():

    def __init__(self, host, port, user, passwd, db):
        # 建立数据库连接
        self.conn = pymysql.connect(
            host=host,
            port=port,
            user=user,
            passwd=passwd,
            db=db
        )
        self.cur = self.conn.cursor(cursor=pymysql.cursors.DictCursor)

    def select_db(self, sql):
        """查询"""
        # 检查连接是否断开,如果断开就进行重连
        self.conn.ping(reconnect=True)
        # 使用 execute() 执行sql
        self.cur.execute(sql)
        # 使用 fetchall() 获取查询结果
        data = self.cur.fetchall()
        return data

    def __del__(self): # 对象资源被释放时触发,在对象即将被删除时的最后操作
        # 关闭游标
        self.cur.close()
        # 关闭数据库连接
        self.conn.close()

    def execute_db(self, sql):
        """更新/新增/删除"""
        try:
            # 检查连接是否断开,如果断开就进行重连
            self.conn.ping(reconnect=True)
            # 使用 execute() 执行sql
            self.cur.execute(sql)
            # 提交事务
            self.conn.commit()
            return "插入成功"
        except Exception as e:
            # 回滚所有更改
            self.conn.rollback()
            return "操作出现错误"

# 定义一个实例对象,方便别的文件引用其方法
db = MysqlDb(MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWD, MYSQL_DB)

main.py文件为主要页面操作,内容如下

from flask import Flask   # 需自行下载Flask包,并导入这几个内容
from flask import jsonify
from flask import request
from common import mysql_operate  # 从common包中导入mysql_operate,使用其db

app = Flask(__name__)
# 初始化生成一个app对象,这个对象就是Flask的当前实例对象,后面的各个方法调用都是这个实例
# Flask会进行一系列自己的初始化,比如web API路径初始化,web资源加载,日志模块创建等。然后返回这个创建好的对象给你


@app.route("/")    # 自定义路径
def index():
    return 'Hello!'


@app.route("/query")    # 自定义query路径
def get_all_users():
    """获取所有用户信息"""
    sql = "SELECT * FROM favorites"   # sql语句,可自行对应自己数据相应的表进行操作
    data = mysql_operate.db.select_db(sql)   # 用mysql_operate文件中的db的select_db方法进行查询
    print("获取所有用户信息 == >> {}".format(data))  # 在pycharm下打印信息
    return jsonify(data)   # 在页面输出返回信息的json格式


@app.route("/insert", methods=["GET", "POST"])  # 表示GET和POST方法都可以进行操作
def insert():
    """插入信息"""
    url = str(request.args.get('url'))   # url为页面端输入的值
    title = str(request.args.get('title'))
    sql = "SELECT * FROM favorites WHERE url = '" + url + "'"
    data = mysql_operate.db.select_db(sql)
    if data:     # 判断是否有返回数据,如果有则表示已经存在
        return '已收藏'
    else:    # 如果没有,则插入新数据
        sql1 = "insert into favorites(url,title) values('" + url + "','" + title + "');"
        mysql_operate.db.execute_db(sql1)
        return '收藏成功'


@app.route("/delete", methods=["GET", "POST"])   #
def delete():
    """删除信息"""
    id = str(request.args.get('id'))
    sql = "SELECT * FROM favorites WHERE id =" + id
    data = mysql_operate.db.select_db(sql)
    if data:
        sql1 = "DELETE FROM favorites WHERE id =" + id
        mysql_operate.db.execute_db(sql1)
        return '删除成功'
    else:
        return '不存在此id'


if __name__ == '__main__':
    app.run(debug=True, host='127.0.0.1', port=8888)   #
# flask默认是没有开启debug模式的,开启debug模式,可以帮助我们查找代码里面的错误
# host = '127.0.0.1' 表示设置的ip,如果需要连接手机等设备,可以将手机和电脑连接同一个热点,将host设置成对应的ip
# port 为端口号,可自行设置

完成效果:

完成上面三个文件的设置后,在main.py文件下进行run,将会出现

python架设apache服务器 python搭建api服务器_mysql_02


主页面:

点击蓝色连接将会弹出网页,因为

@app.route("/")    # 自定义路径
def index():
    return 'Hello!'

这一段代码,所以主界面是Hello!

python架设apache服务器 python搭建api服务器_python_03

insert页面

接下来在网页端输入如下,测试insert

python架设apache服务器 python搭建api服务器_python_04


再打开数据库对应的表时,会发现多了一条数据,(id是自增的,所以不用在意)

python架设apache服务器 python搭建api服务器_flask_05


query页面

输出数据库中数据的json格式

python架设apache服务器 python搭建api服务器_python_06


delete页面

python架设apache服务器 python搭建api服务器_python架设apache服务器_07


此时数据库中id为63的数据已经被删除了

python架设apache服务器 python搭建api服务器_mysql_08

最后注意:
1.在使用后台服务时,确保Python开启服务,不然服务就没有哦!
2.调用接口时,需保证调用的url与页面端的地址相同