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})