flask-分页、模型对应关系

一、分页

    page = int(request.args.get('page', 1))
    # 方法一
    stus = Students.query.offset((page - 1) * 2).limit(5)
    # 切片
    stu1 = Students.query.all()[(page - 1) * 2:page * 2]
    # sql语句
    sql = 'select * from students limit %s,%s ' % ((page - 1) * 2, page * 2)
    stu2 = db.session.execute(sql)
    # paginate()方法
    paginates = Students.query.paginate(page, 4)
    stu3 = paginates.items
    return render_template('index.html', stus=stu3, paginates=paginates)

二、模型关系

1.一对多
学生类
class Students(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    s_name = db.Column(db.String(20), unique=False, nullable=False)
    s_age = db.Column(db.Integer, default=19)
    s_g = db.Column(db.Integer, db.ForeignKey('grade.id'), nullable=True)

    __tablename__ = 'students'
班级类
class Grade(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    g_name = db.Column(db.String(30), unique=True, nullable=False)
    students = db.relationship('Students', backref='grade')

    __tablename__ = 'grade'
绑定学生和班级关联关系
    stus_id = [8, 9]
    for id in stus_id:
        stu = Students.query.get(id)
        # 在flask中stu.s_g获取的值为int类型
        # 在django中,stu.s_g获取的是对象,stu.s_g_id获取到的int类型
        stu.s_g = 3
        stu.save()
通过班级查找学生信息
grade = Grade.query.filter(Grade.g_name == '花儿一班').first()
    stus = grade.students
通过学生查找班级信息
 stu = Students.query.get(5)
    # 获取班级,学生对象.backref
    grade = stu.grade
2.多对多
学生类
class Students(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    s_name = db.Column(db.String(20), unique=False, nullable=False)
    s_age = db.Column(db.Integer, default=19)
    s_g = db.Column(db.Integer, db.ForeignKey('grade.id'), nullable=True)

    __tablename__ = 'students'
课程类
class Course(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    g_name = db.Column(db.String(30), unique=True, nullable=False)
    students = db.relationship('Students', secondary=s_c, backref='cou')

    __tablename__ = 'course'
中间表
s_c = db.Table('s_c',
               db.Column('s_id', db.Integer, db.ForeignKey('students.id'), primary_key=True),
               db.Column('c_id', db.Integer, db.ForeignKey('course.id'), primary_key=True))
绑定学生与课程关联关系
stu = Students.query.get(2)
    # 学生对象查找课程信息,stu.cou
    cou1 = Course.query.get(1)
    cou2 = Course.query.get(2)
    # 绑定学生科课程的关联关系
    stu.cou.append(cou1)
    stu.cou.append(cou2)
    stu.save()

你可能感兴趣的:(flask-分页、模型对应关系)