【Flask】在PyCharm上写一个简单的register接口

今天初步了解了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()


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日 近 长 安 远

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值