没有合适的资源?快使用搜索试试~ 我知道了~
flask的orm框架SQLAlchemy查询实现解析
1 下载量 180 浏览量
2021-01-20
04:05:14
上传
评论
收藏 62KB PDF 举报
温馨提示
试读
3页
这篇文章主要介绍了flask的orm框架SQLAlchemy查询实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一对多,多对多是什么? 一对多。例如,班级与学生,一个班级对应多个学生,或者多个学生对应一个班级。 多对多。例如,学生与课程,可以有多个学生修同一门课,同时,一门课也有很多学生。 一对多查询 如果一个项目,有两张表。分别是班级表,学生表。 在设计数据表时,我们给学生表设置一个外键,指向班级表的 id 。 sqlalchemy 模板创建表的代码: from flask import Flask, render_templ
资源详情
资源评论
资源推荐
flask的的orm框架框架SQLAlchemy查询实现解析查询实现解析
这篇文章主要介绍了flask的orm框架SQLAlchemy查询实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具
有一定的参考学习价值,需要的朋友可以参考下
一对多,多对多是什么?一对多,多对多是什么?
一对多。例如,班级与学生,一个班级对应多个学生,或者多个学生对应一个班级。
多对多。例如,学生与课程,可以有多个学生修同一门课,同时,一门课也有很多学生。
一对多查询一对多查询
如果一个项目,有两张表。分别是班级表,学生表。
在设计数据表时,我们给学生表设置一个外键,指向班级表的 id 。
sqlalchemy 模板创建表的代码:
from flask import Flask, render_template, request, flash, redirect
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__,static_folder="static",template_folder="templates")
# 设置数据库连接属性
app.config['SQLALCHEMY_DATABASE_URI'] = '×××'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 实例化 ORM 操作对象
db = SQLAlchemy(app)
# 班级表
class Classes(db.Model):
__tablename__ = "classes"
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(20),nullable=False,unique=True)
# 学生表
class Students(db.Model):
__tablename__ = "students"
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(40),nullable=False)
cls_id = db.Column(db.Integer,db.ForeignKey("classes.id")) # 注意要写成(表名.字段名)
创建完表,插入完数据后。
如果我们知道学生的学号,要查学生班级的名称,应该怎么操作呢?
现在可以用一种比较麻烦的方达查询:
cls_id = Students.query.filter(Student.id == 'xxx').first()
cls = Classes.query.filter(Classes.id == cls.id).first()
print(cls.name)
这样的方法太麻烦了,有没有简单的办法?
上面创建表的代码,在18行可以插入一条语句。
relate_student = db.relationship("Students",backref='relate_class',lazy='dynamic')
其中realtionship描述了Students和Classes的关系。在此文中,第一个参数为对应参照的类”Students”
第二个参数backref为类Students申明新属性的方法
第三个参数lazy决定了什么时候SQLALchemy从数据库中加载数据
如果设置为子查询方式(subquery),则会在加载完Classes对象后,就立即加载与其关联的对象,这样会让总查询数量减少,
但如果返回的条目数量很多,就会比较慢
另外,也可以设置为动态方式(dynamic),这样关联对象会在被使用的时候再进行加载,并且在返回前进行过滤,如果返回的对
weixin_38635166
- 粉丝: 8
- 资源: 876
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0