文章目录
今天初步了解了Flask,也了解到了pymysql(听说已经差不多被淘汰了,很low,明天我就去了解一下ORM),不过,“存在即合理”,学了就用一下把,写个小接口(/register)
1. 需求分析
写一个接口 ”/register“:
@stu_bp.route("/register")
def register():
要求:
1、通过接受json格式的数据,获取用户名、性别、年龄;
2、存入数据库;
3、成功返回”注册成功“,中间发生异常或失败返回”注册失败“。
2. 编写代码
2.1 目录结构一览

下面我将把各个文件里的代码编辑在下面(供参考):
2.1 编写./config下的setting.py文件
"""
@date: 2023/3/16
@file: settings
@author: Jiangda
@desc: test
"""
DEBUG = True
HOST = '0.0.0.0'
PORT = 8000
2.2 编写app.py程序文件
"""
@date: 2023/3/16
@file: app
@author: Jiangda
@desc: test
"""
#核心对象配置以及生成文件
import os
from flask import Flask
def create_app(config=None):
#核心对象
app = Flask(__name__)
#app.config -->Config(dict) 就是Config类的实例,Config又继承了字典
# if key.isupper():
# self[key] = getattr(obj, key)
#读取config.,将存入app.config字典
app.config.from_object('config.settings')
#根据系统环境变量加载:1、可以保密。2、可以加载不同的配置文件
if 'FLASK_CONFIG' in os.environ:
app.config.from_envvar('FLASK_CONF')
if config is not None:
if isinstance(config, dict):
app.config.update(config)
elif config.endswith(".py"):
app.config.from_pyfile(config)
#注册蓝图
import router
router.init_app(app)
return app
2.3 编写server.py入口文件
"""
@date: 2023/3/16
@file: server
@author: Jiangda
@desc: test
"""
from app import create_app
jd_app = create_app()
jd_app.run(debug=jd_app.config['DEBUG'],
host=jd_app.config['HOST'],
port=jd_app.config['PORT'])
2.4 编写./router下的文件
2.4.1 编写__init__.py文件
"""
@date: 2023/3/16
@file: __init__.py
@author: Jiangda
@desc: test
"""
from router.student.stuinfo import stu_bp
def init_app(app):
app.register_blueprint(stu_bp)
2.4.2 编写./student下的stuinfo.py文件
"""
@date: 2023/3/16
@file: stuinfo
@author: Jiangda
@desc: test
"""
#######使用蓝图管理路由
from flask import Blueprint, request
import pymysql
#生成蓝图对象
stu_bp = Blueprint("student",__name__,url_prefix="/v1")
#把路由绑到蓝图对象
@stu_bp.route("/")
def index():
return "this is student info index"
# 写一个接口 ”/register“
@stu_bp.route("/register",methods = ['POST'])
def register():
message = request.json
name = message["name"]
sex = message["sex"]
age = message["age"]
try:
db = pymysql.connect(host="192.168.1.204",
user="jiangda",
passwd="123456",
database="flask")
cursor = db.cursor()
cursor.execute(f"insert into stuinfo(name,sex,age) values('{name}','{sex}',{age})")
db.commit()
db.close()
except Exception as e:
return "Regist False!"
return "Regist Successfully!"
3. 测试验证
3.1 运行
运行server.py

3.2 用Postman测试

看到下面的**Regist Successfully!**说明成功注册。
3.3 打开数据库

4 总结
这两天学到的知识点:
GET -- 查
POST -- 新增
PUT -- 修改
DELETE -- 删除
OPTIONS -- 查看你的url支持哪些方法
HEAD -- 请求头部信息
Flask实例化生成核心对象app,后续所有的东西都要和app绑定!
路由和视图函数绑定:
路由绑定 通过两张表进行的 url_map view_functions
url_map:保存到是url和endpoint和映射关系
view_functions: 保存的是endpoint和function的映射关系
打开调试模式:
app.debug = True #修改代码自动重启,发生错误会展示详细信息
app.run(host='0.0.0.0', port=9000)
接受客户端传递的参数
1、构造动态url
2、request对象 -- 客户端请求的所有信息全部都封装在一个对象--request对象
3、常用属性:
url 请求记录的url地址
method 记录请求中的http方法
args 记录请求中的查询参数 -- 常常用在GET方法里 例:http://127.0.0.1:9000/login?name=sctl&passwd=123456
form 记录请求中的表单数据
json 记录请求中传递的json格式数据
相关的数据库操作:
Linux:
1.下载:yum install mariadb mariadb-server -y
若已经有,需要破解:vim /etc/my.cnf,在文件里输入:skip-grant-tables,再重启:systemctl restart mariadb。(主注意破解成功登录后,将该文件删掉加入的语句,不然会影响后面的操作)
2.启动和设置开机启动:
[root@firewall ~]# systemctl start mariadb
[root@firewall ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
3.进入:
show databases; 查看有多少个数据库。
use mysql; 使用mysql数据库。
show tables; 查看当前数据库下有多少张表。
grant all privileges on . to “jiangda”@“%” identified by ‘123456’; 授予从所有主机访问过来的jiangda用户,对所有库所有表有所有权限,密码为123456。
flush privileges; 刷新权限
4.建立数据库flask,编码设置为utf8:
MariaDB [mysql]> create database flask charset utf8;
5.建表:
MariaDB [mysql]> use flask
Database changed
MariaDB [flask]> create table stuinfo(
-> id int primary key auto_increment comment '学号',
-> name varchar(128) not null,
-> sex varchar(32) not null,
-> age int not null
-> );
6.查看建表语句属性:
show create table stuinfo;
7.查看表结构:
desc stuinfo;
8.插入数据:
MariaDB [flask]> insert into stuinfo(name,sex,age) values("jd1", "male", 10);
9.查询表数据:
MariaDB [flask]> select * from stuinfo;
MariaDB [flask]> select id,name from stuinfo
MariaDB [mysql]> select * from user \G;
# \G 一行一行的输出
10.把权限表里用户名为空的记录删掉:
MariaDB [mysql]> delete from user where User="";
11.pymysql简单使用案例:
案例一:
# pymysql
import pymysql
# 打开数据库连接
db = pymysql.connect()
# 使用cursor()方法创建一个游标对象
cursor = db.cursor()
# 使用execute()方式执行SQL查询
cursor.execute("SELECT VERSION()")
# 使用fetchone()方法获取单条数据
data = cursor.fetchone()
# print("Database version : %s "% data)
#关闭数据库连接
db.close()
案例二:
# pymysql
import pymysql
# 打开数据库连接
db = pymysql.connect(host="192.168.1.204",
user="jiangda",
passwd="123456",
database="flask")
# 使用cursor()方法创建一个游标对象
cursor = db.cursor()
# 使用execute()方式执行SQL查询
cursor.execute("select * from stuinfo")
# 使用fetchone()方法获取多条数据
data = cursor.fetchall()
#结果是元组里面套元组,不能用%格式化
#结果:((1, 'sctl1', 'fmale', 10), (2, 'sctl2', 'male', 10), (3, 'sctl3', 'female', 11))
print(data)
#关闭数据库连接
db.close()
2079

被折叠的 条评论
为什么被折叠?



