目录

一、项目背景

1.1 技术栈

1.2 总结

二、源码

2.1 sever.py

2.2 server_conf.py

三、运行演示(图文教程)

3.1 数据准备

3.2 启动服务

3.3 测试GET : select_data

3.4 测试PATCH: update_data

3.5 测试DELETE : delete_data

3.6 测试POST : insert_data

一、项目背景

1.1 技术栈

python版本是,python3.10.11,其他的包用python对应的版本即可,框架:flask2.3.2 ,IDEA是pycharm,使用postman模拟前端,数据库:mysql

1.2 总结

只是一个快速上手flask和前后端交互性的一个小案例,优化空间非常大,如:代码的健壮性,可读性,格式的标准,代码不简洁等等,并且实现的不够灵活,很多地方都是写死的,并且对数据库的操作要小心,尤其是删除插入修改,一定要把所有场景考虑好,以免发生事故,此代码在真实运用场景并不提倡,ps:读者也可以学习下flask_resrless的使用

二、源码

在本地新建一个文件夹如:sql_platform,将2.1和2.2两个源码存成两个py文件,都放在sql_platform下面。

2.1 sever.py

"""

Author : rebeccayanhan

Time : 2023/5/22 下午5:45

File : server.py

"""

from flask import Flask, jsonify, request

from service_conf import *

import pymysql

import json

app = Flask(__name__)

def create_mysql_conn():

# pymysql连接rebecca数据库

conn = pymysql.connect(host=mysql_params['host'],

port=mysql_params['port'],

user=mysql_params['user'],

passwd=mysql_params['passwd'],

db=mysql_params['db'],

charset=mysql_params['charset'])

return conn

@app.route("/")

def hi():

return "Hi!"

@app.route("/select_data")

def select():

conn = create_mysql_conn()

# 创建一个游标

cursor = conn.cursor()

query_sql = "select * from student;"

n = cursor.execute(query_sql)

ls = ['Sno', 'Sname', 'Sex', 'Sage', 'Sdept']

result_dic = {'count': n, 'table_name': 'student'}

ls_2 = []

for row in cursor:

temp = {}

for i in range(len(row)):

temp[ls[i]] = row[i]

ls_2.append(temp)

result_dic['info'] = ls_2

cursor.close()

return json.dumps(result_dic)

@app.route("/insert_data", methods=["POST"])

def insert():

conn = create_mysql_conn()

# 创建一个游标

cursor = conn.cursor()

# 这个info_list = request.form.get("info")通过url

# 下面这个通过body

info_list = request.json.get("info")

for info in info_list:

sno = info['Sno']

sname = info['Sname']

sex = info['Sex']

sage = info['Sage']

sdept = info['Sdept']

query_sql = "insert into student(Sno, Sname, Sex, Sage, Sdept) values({}, {}, {}, {}, {});".format(sno,

repr(sname),

repr(sex),

sage,

repr(sdept))

cursor.execute(query_sql)

cursor.close()

conn.commit()

ret_message = {"code": 0, "status": "successful"}

return ret_message

@app.route("/update_data", methods=['PATCH'])

def update():

conn = create_mysql_conn()

cursor = conn.cursor()

info_list = request.json.get("info")

for info in info_list:

sname = info['Sname']

if sname == '李勇':

query_sql = "update student set sage=90 where sname='{}';".format(sname)

print(query_sql)

cursor.execute(query_sql)

# 修改后需要commit

cursor.close()

conn.commit()

ret_message = {"code": 0, "status": "successful"}

return ret_message

@app.route("/delete_data", methods=['DELETE'])

def delete():

conn = create_mysql_conn()

cursor = conn.cursor()

info_list = request.json.get("info")

for info in info_list:

sno = info['Sno']

query_sql = "delete from student where Sno={};".format(sno)

cursor.execute(query_sql)

# 删除后需要commit

cursor.close()

conn.commit()

ret_message = {"code": 0, "status": "successful"}

return ret_message

if __name__ == "__main__":

app.run()

2.2 server_conf.py

"""

Author : rebeccayanhan

Time : 2023/5/22 下午5:45

File : server_conf.py

"""

# 读写参数

mysql_params = {

'host': '127.0.01',

'user': 'root', #数据库用户名

'passwd': '********', #用户密码

'db': 'rebecca', #数据库的名字

'port': 3306, #端口号

'charset': 'utf8' #编码方式

}

三、运行演示(图文教程)

3.1 数据准备

先创建一个database,这里我使用的是自己创建的rebecca

 再往数据库里面先存入几条数据,如下表所示。

查看数据库的端口号

show global variables like 'port';

 3.2 启动服务

启动server.py文件

启动成功,如下图所示, 点击http://127.0.0.1:5000/

 出现,服务运行成功

3.3 测试get : select_data

 对应代码为select函数(def select():那行开始)

选择GET,URL输入

http://127.0.0.1:5000/select_data

选择json结构

3.4 测试PATCH: update_data

 对应代码为updata函数(def update():那行开始)

通过这个函数我希望把李勇的年龄改为90,现在的数据是,李勇的年龄是20 

select * from student where sname='李勇';

 输入 http://127.0.0.1:5000/update_date,和body

{

"info": [

{

"Sno": 201215121,

"Sname": "李勇",

"Sex": "男",

"Sage": 20,

"Sdept": "CS"

}

]

}

点击send,如下图,显示已经成功 

 再次查看数据,已经修改成功

3.5 测试DELETE : delete_data

 对应代码为delete函数(def delete():那行开始)

代码实现是通过学号sno来删除,将学号等于201215123的人删除,

postman进行如下输入和选择

{

"info": [

{

"Sno": 201215123,

"Sname": "李勇",

"Sex": "男",

"Sage": 20,

"Sdept": "CS"

}

]

}

 输入http://127.0.0.1:5000/delete_data,点击send,如下图,显示已经成功 

删除结果

3.6 测试POST : insert_data

 对应代码为insert函数(def insert():那行开始)

插入一个全新数据,postman进行如下输入和选择

{

"info": [

{

"Sno": 112873981211,

"Sname": "rebecca",

"Sex": "女",

"Sage": 18,

"Sdept": "CS"

}

]

}

输入http://127.0.0.1:5000/insert_data ,点击send,如下图,显示已经成功 

查看数据库是否插入成功,如图所示已经成功。(也可以通过get来查看)

推荐链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。