模型关系
redis 安装
G:
cd 下载\360下载\Redis-x64-3.0.504
redis-server.exe redis.windows.conf
数据模型
1:1
外键+唯一约束
1:N
外键
- M:N
两个外键,生成一-张额外的关系表
分页查询
# 展示所有的学生
@blue.route('/studentlist/')
def student_list():
# students = Student.query.all()
# students = Student.query.filter(Student.studentname.like("%小华%"))
# students = Student.query.filter(Student.id.__lt__(10))
# students = Student.query.filter(Student.studentname.__le__(10))
# students = Student.query.filter(Student.studentname.__gt__(10))
# students = Student.query.filter(Student.studentname.__ge__(10))
# students = Student.query.filter(Student.studentname.contains('44'))
students = Student.query.filter(Student.studentname == '小张10')
# students = Student.query.all()
students = Student.query.filter(Student.studentname.startswith('小华'))
students = Student.query.filter(Student.studentname.endswith('0'))
#
students = Student.query.filter_by(id=1) # 常用在级联数据上
students = Student.query.limit(3) # 限制
students = Student.query.offset(1) # 偏移
# students = Student.query.offset(1).order_by("id") # 错误组合
students = Student.query.order_by("id").limit(11).offset(1) # 正确组合
# students = Student.query.order_by("-id") # 排序
for ss in students:
print(ss.id)
return render_template('studentlist.html', studentlist=students)
@blue.route('/get/')
def getstudent():
student = Student.query.get(2)
# student = Student.query.order_by(Student.id.desc()).first()
# student = Student.query.order_by('id').first()
print(student.id)
return 'chenggong'
# return render_template('studentlist.html', studentlist=student)
@blue.route('/getstudentwithpage/')
def get_page():
page = request.args.get("page", 1, type=int)
print(page)
print(type(page))
per_page = request.args.get('per_page', 3, type=int)
students = Student.query.limit(per_page).offset((page - 1) * per_page)
return render_template('studentlist.html', studentlist=students)
@blue.route('/getpaginate/')
def get_paginate():
page = request.args.get("page", 1, type=int)
per_page = request.args.get('per_page', 3, type=int)
max_per_page = request.args.get('max_per_page', 20, type=int)
pagination = Student.query.paginate(page, per_page, null, max_per_page)
students = pagination.items
return render_template('studentlist.html', studentlist=students)
@blue.route('/getpaginate1/', methods=['GET', 'POST'])
def get_paginate1():
keyword = request.form.get('keyword')
page = request.args.get("page", 1, type=int)
per_page = request.args.get('per_page', 3, type=int)
max_per_page = request.args.get('max_per_page', 20, type=int)
pagination = Student.query.paginate(page, per_page, null, max_per_page)
if keyword is not None
pagination = Student.query.filter(Student.studentname.contains(keyword)).paginate(page, per_page, null, max_per_page)
students = pagination.items
print(keyword)
return render_template('studentpagination.html', pagination=pagination, per_page=per_page)
例子
# students = Student.query.all()
# students = Student.query.filter(Student.studentname.like("%小华%"))
# students = Student.query.filter(Student.id.__lt__(10))
# students = Student.query.filter(Student.studentname.__le__(10))
# students = Student.query.filter(Student.studentname.__gt__(10))
# students = Student.query.filter(Student.studentname.__ge__(10))
# students = Student.query.filter(Student.studentname.contains('44'))
students = Student.query.filter(Student.studentname == '小张10')
# students = Student.query.all()
students = Student.query.filter(Student.studentname.startswith('小华'))
students = Student.query.filter(Student.studentname.endswith('0'))
#
students = Student.query.filter_by(id=1) # 常用在级联数据上
students = Student.query.limit(3) # 限制
students = Student.query.offset(1) # 偏移
# students = Student.query.offset(1).order_by("id") # 错误组合
students = Student.query.order_by("id").limit(11).offset(1) # 正确组合
# students = Student.query.order_by("-id") # 排序
检索运算符
contians 包含
like 跟上面差不多
gt 大于 >=
ge 大于等于
lt 小于 <
le 小于等于 <=
startswith 开头是
endswith 结尾是
筛选
filter_by() 条件
offset() 偏移
limit() 限制
order_by() 排序
get() 主键获取要带参数
first() 第一个
paginate() 分页