flask一对多数据库创建,基础增删改查

数据库字段常用类型

数据类型解释
Integer一个整数(*****)
String (size)有长度限制的字符串(*****)
Text一些较长的 unicode 文本(*****)
DateTime表示为 Python datetime 对象的 时间和日期(*****)
Float存储浮点值
Boolean存储布尔值
DECIMAL十进制,多用于价格

一对多模型类创建

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

# 1.一对多关系的建立: 一方建立关系, 多方建立外键

# 专业模型
class Sub(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32))
    # 一方定义关系, 关联Stu模型, Stu为模型类名,
    # backref的值是给"多方"用来查询"一方"的
    stu = db.relationship('Stu', backref='sub')  

# 学生模型
class Stu(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32))
    # 多方定义外键, 关联sub.id  
    # sub是在数据库里面的表名不是模型类名字
    sub_id = db.Column(db.Integer, db.ForeignKey('sub.id'))

Flask-RESTful提供RequestParser类, 用来帮助我们检验和转换请求数据. 它设计成提供简单并且统一的访问Flask.request对象里的任何变量的入口

RequestParser()校验参数可选字段(部分)
可选参数作用案例
type参数类型type=int
help错误提示help=“id不可以为空”
required是否必须(默认为Flase)required=True
choices特定的值choices=[‘男’,‘女’]
default如果不传,默认值default=18

增删改查

查询

from flask import Blueprint, jsonify
from models.model import *
from flask_restful import marshal, fields, reqparse

    def get(self):
    	# 获取一方所有数据
        sub = Sub.query.all()

		# 序列化数据
		# marshal()方法直接序列化数据
       	# sub: 要序列化的数据
        # {id...}: 要序列化的字段
        data = marshal(sub, {
            "id": fields.Integer,
            "name": fields.String,
        })
        # 返回json格式响应
        return jsonify({'code': 200, 'msg': '数据获取成功', 'data': data})


增加

    def post(self):
    	# 构建RequestParser()对象
    	# 实例化
        req = reqparse.RequestParser()
        # 添加校验字段
        req.add_argument("name")
        # 可选参数(部分)
        # type=int # 参数类型 
        # help="id不可以为空"  # 错误提示
        # required=True # 是否必须
        # action="append"  # 出现同名参数如何处理,append追加,store 保留第一个
        # choices=['男','女']  # 特定的值
        # default=18  # 如果不传,默认值
     
		# 启动检验处理
        args = req.parse_args()
        # 
        s1 = Sub(
            name=args["name"],
        )
        db.session.add(s1)
        # 提交事务
        db.session.commit()

        return jsonify({'code': 200, 'msg': '数据添加成功'})

修改

    def put(self):
        req = reqparse.RequestParser()
        req.add_argument("id")

        args = req.parse_args()
		# 第一种方法
		# 直接修改
        Sub.query.filter(Sub.id == args["id"]).update(
            args
        )
        # 第二种方法
        # 先获取 然后赋值修改
        sub = Sub.query.filter(Sub.id == args["id"]).first()
        # 赋值
        sub.name=args["name"]
        # 提交事务
        db.session.commit()
        
        return jsonify({'code': 200, 'msg': '数据修改成功'})  
        

删除

    def delete(self):
        req = reqparse.RequestParser()
        req.add_argument("id")
        args = req.parse_args()

        Sub.query.filter(Sub.id == args['id']).delete()

        db.session.commit()

        return jsonify({'code': 200, 'msg': '数据删除成功'})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值