无限级分类-查询

flask创建模型类 orm操作

自关联

class Comment(db.Model):
    """评论"""
    __tablename__ = "info_comment"   #数据库别名
    id = db.Column(db.Integer, primary_key=True)  # 评论编号
    content = db.Column(db.Text, nullable=False)  # 评论内容
    parent_id = db.Column(db.Integer, db.ForeignKey("info_comment.id"))  # 父评论id
    parent = db.relationship("Comment", remote_side=[id])  # 自关联

查询

def data_list(data):
    list2 = []
    if not len(data):
        return list2
    dict2 = {}
    for i in data:
        dict2[i['code']] = i
        # print(dict2)
 
    for j in data:
        pid = j['pid']
        if not pid:
            list2.append(j)
        else:
            if 'son' not in dict2[pid]:
                dict2[pid]['son'] = []
            dict2[pid]['son'].append(j)
 
    return list2
# 获取地址
@addr_bp.route('/addr')
def index():
    # 查询数据库获取地址
    data = db.find_all(f'select * from tb_areas')
    list2 = data_list(data)
    return jsonify({'code': 200, 'list': list2})

ORM操作 flask框架

模型类

from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
db = SQLAlchemy()
#TODO 自定义模型类
class Usermodel(db.Model):
    uid=db.Column(db.Integer,primary_key=True,autoincrement=True,comment='id')  #id
    name=db.Column(db.String(30),comment='名字')
    pid=db.Column(db.Integer,db.ForeignKey('usermodel.uid'))  #绑定父id
    pids=db.relationship('Usermodel',remote_side=[uid])  #自关联remote_side=[uid]

蓝图实现

import redis
from flask import Blueprint,jsonify
from flask_restful import Api,Resource,reqparse
from models.model import Usermodel
user_dp=Blueprint('user_dp',__name__)

api=Api(user_dp)
def showuser(data):   #封装方法 也可以写进类视图中
    list2=[]
    dict2={}
    for i in data:
        dict2[i['uid']]=i
    print(dict2)

    for j in data:
        pid=j['pid']
        if pid is None:   #如果为空说明是第一级
            list2.append(j)
        else:
            if 'son' not in dict2[pid]:   #判断是否有下级分类
                dict2[pid]['son']=[]     #如果没有就创建
            dict2[pid]['son'].append(j)   #添加进去
    return list2

class Userview(Resource):
    def get(self):
        user_info = Usermodel.query.all()
        user_data = []
        for i in user_info:
            a = {
                'uid': i.uid,
                'name': i.name,
                'pid': i.pid
            }
            user_data.append(a)
        ss=showuser(user_data)    #调用方法 并传参
        return jsonify({'code':200,'data':ss})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值