首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flask-sqlalchemy;按外键列表筛选查询

Flask-SQLAlchemy是一个基于Flask框架的SQLAlchemy扩展,它简化了在Flask应用中使用SQLAlchemy进行数据库操作的过程。

Flask-SQLAlchemy提供了一种简洁的方式来定义数据库模型,并且可以方便地进行数据库查询、插入、更新和删除等操作。它将数据库操作封装成了Flask的扩展,使得开发者可以更加专注于业务逻辑的实现,而不需要过多关注底层的数据库操作细节。

在使用Flask-SQLAlchemy时,首先需要定义数据库模型。通过定义Python类来表示数据库中的表,类的属性对应表中的字段。例如,我们可以定义一个User类来表示用户表:

代码语言:txt
复制
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)
    email = db.Column(db.String(100), unique=True, nullable=False)

在上面的代码中,我们使用db.Column来定义表中的字段,db.Integer表示整型,db.String表示字符串类型。nullable=False表示该字段不能为空,unique=True表示该字段的值必须唯一。

接下来,我们可以使用Flask-SQLAlchemy提供的查询接口来进行数据库查询。例如,我们可以按照外键列表进行筛选查询:

代码语言:txt
复制
users = User.query.filter(User.id.in_([1, 2, 3])).all()

上面的代码中,User.query表示查询User表,filter方法用于添加查询条件,User.id.in_([1, 2, 3])表示id字段在[1, 2, 3]列表中的记录,all()表示查询所有符合条件的记录。

Flask-SQLAlchemy还提供了其他丰富的查询接口,例如按照字段值进行排序、分页查询等。具体的使用方法可以参考Flask-SQLAlchemy的官方文档:Flask-SQLAlchemy官方文档

总结一下,Flask-SQLAlchemy是一个方便易用的Flask扩展,它简化了在Flask应用中使用SQLAlchemy进行数据库操作的过程。通过定义数据库模型和使用提供的查询接口,我们可以方便地进行数据库操作,包括按外键列表筛选查询。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL3_查询

文章目录 MySQL_查询 1.数据的完整性 (1).保证实体的完整 (2).保证域的完整性 (3).引用的完整性 (4).自定义完整性 2. 3.实体之间的关系 (1).一对一:主键关系 (...13.插入语句的其它用法 MySQL_查询 1.数据的完整性 1.实体的完整性,一条记录,就是一个实体,如果记录无法区分,则失去了实体的完整性 2.域完整性:如果有两个字段无法区分,则失去了域完整性...unique) (2).保证域的完整性 1.数据类型的约束 2.默认值(default) 3.非空约束(not null) (3).引用的完整性 应用(foreign key) (4).自定义完整性...1.存储过程(相当于python中的自定义函数) 2.触发器 2. :从表的公共字段 的约束主要是用来保证引用的完整性的,主外的名字可以不一样,但是数据类型可以一样....ON DELETE CASCADE ON UPDATE CASCADE; #删除外 #score_ibfk_1 的名字,可以有多个 alter table score drop foreign

3K20

数据库条件查询语句_sql多条件筛选语句

文章目录 前言 一、单条件查询 二、多条件查询 前言 1. 熟练掌握where子句各类运算符的使用 2....熟练掌握多条件查询and、or的使用 一、单条件查询 在SQL中,insert、update、delete和select后面都能带where子句,用于插入、修改、删除或查询指定条件的记录 SELECT...table_name WHERE column_name 运算符 value 语句:select * from table_name where column_name 运算符 value; 下面是查询不等于...Dumb的名单 大于等于 Between语句 二、多条件查询 在where子句中,使用and、or可以把两个或多个过滤条件结合起来。...=‘admin’的数据 or语句:id>=3或者password=’Dumb’的数据都可以显示出来 多个条件时 可以看到这里明明是筛选ID>=6的为什么还会出现ID=2-5的呢这是因为

3.6K20

Flask数据库过滤器与查询

() # 查询Role对象的所有数据,结果是一个列表 # 这是flask-sqlalchemy封装sqlalchemy后的方法 li = Role.query.all() # 获得一个role类型的对象...: 指数据查询的集合 原始查询集: 不经过任何过滤返回的结果为原始查询集 数据查询集: 将原始查询集经过条件的筛选最终返回的结果 查询过滤器: 过滤器 功能 cls.query.filter(...添加到address模型中person_id列被定义为,就是这个建立起了联系。传给db.ForeignKey()的参数’person_id’表明,这一列的值是person表中行的id值。...大多数情况下,db.relationship()都能自行找到关系中的,但有时却无法决定把哪一列作为。...,定义关系时必须选用可选参数foreign_keys指定

6.8K10

Flask中ORM框架之SQLAlchemy插件入门到弃坑

答: 官方文档使用关系 relationship 进行 的反向引用即级联查询,注意点他不是映射在数据库之中的他实际上是Django的隐型属性; # 基础语法 反向引用名称 = db.relationship...对象 filter_by(字段 数学运算符 值) # 指定查询条件(简单) 常用于级联数据条件语法精准 # 筛选 offset() # 偏移 limit() # 限制数量 #...2.使用关系 relationship 进行的反向引用即级联查询; # Day3\App\models.py # 例如以下数据库模型的声明 class Animal(db.Model): __...# 使用插入数据 @d3.route('/add_fdog/') def add_fdog(): fdog = FDog() # 插入数据根据字段中的值排序的规则为倒序 fdog.fid...id=99 反向引用或者的数据(列表对象): [, <FDog 13

3.1K10

小白学Flask第十一天| flask-sqlalchemy数据库扩展包(一)

查询的语句也是结构化的语言。 关系型数据库的列定义了表中表示的实体的数据属性。比如:商品表里有name、price、number等。...在前面我也提到了flask-sqlalchemy这个扩展。首先第一步就是去安装这个扩展: pip install flask-sqlalchemy 简单粗暴,直接pip一下就ok了。...role_id = db.Column(db.Integer, db.ForeignKey('role_id')) 添加到user模型中的role_id列被定义成,就是这个建立起列关系。...对于一个Role实例,其users属性将返回和角色相关联的用户组成的列表(也就是“多“那一端)。 db.relationship()的第一个参数表明这个关系的另一端是哪个模型。...通过User实例的这个属性可以获得对应的Role模型对象,而不用再通过role_id获取。

2.6K30

Flask 入门系列教程(五)

数据库按照一定规则保存程序数据,程序再发起查询取回所需的数据。Web 程序最常用基于关系模型的数据库,这种数据库也称为 SQL 数据库,因为它们使用结构化查询语言。...而在 Flask 当中,就有这么一个插件,可以非常方便的操作数据库:Flask-SQLAlchemy Flask-SQLAlchemy Flask-SQLAlchemy 是一个 Flask 扩展,简化了在...和其他大多数扩展一样,Flask-SQLAlchemy 也使用 pip 安装: pip install flask-sqlalchemyFlask-SQLAlchemy 中,数据库使用 URL 指定...这一属性可替代 role_id 访问 Role 模型,此时获取的是模型对象,而不是的值。 添加到 User 模型中的 role_id 列被定义为,就是这个建立起了关系。...在查询上应用指定的过滤器后,通过调用 all() 执行查询,以列表的形式返回结果。除了all() 之外,还有其他方法能触发查询执行。

3.2K31

gorm查询嵌套结构体,嵌套预加载preload,关联,foreignkey,引用references

一直想用gorm查询到嵌套结构体,可惜自定义嵌套结构体好像不支持?下次这个思路再试试,可能也行哦。 用join查询虽然强大,但是无法将查询结构映射到嵌套结构体。...BusinessUsers []BusinessUser } //出差人员表 type BusinessUser struct { gorm.Model UserID int64 // ...Find(&business).Error return business, err } 注意: // 注释:Has Many一对多的、引用 // 1.默认是 从表中的字段为 主表模型的类型(...// } // type CreditCard struct {——从表 // gorm.Model // Number string // UserID uint——这个是默认(主表名...// type CreditCard struct { // gorm.Model // Number string // UserNumber string——,这个值等于User

5.5K30

Flask-SQLAlchemy操作数据库

SQLAlchemy: https://www.sqlalchemy.org/ 安装 flask-sqlalchemy pip install flask-sqlalchemy 如果连接的是 mysql...中,数据库使用URL指定,而且程序使用的数据库必须保存到Flask配置对象的 **SQLALCHEMY_DATABASE_URI** 中 app.config['SQLALCHEMY_DATABASE_URI...True,允许有空值,如果为False,不允许有空值 default 为这列定义默认值 ### 常用的SQLAlchemy关系选项 选项名 说明 backref 在关系的另一模型中添加反向引用,用于设置键名称...- 在 Flask-SQLAlchemy 中,查询操作是通过 query 对象操作数据。 - 最基本的查询是返回表中所有数据,可以通过过滤器进行更精确的数据库查询。...常用的SQLAlchemy查询结果的方法 方法 说明 all() 以列表形式返回查询的所有结果 first() 返回查询的第一个结果,如果未查到,返回None first_or_404() 返回查询的第一个结果

1.5K20

SQLAlchemy建立数据库模型之间的关系

常见关系: 一对多关系 多对一关系 多对多关系 一对一关系 一对多关系(一个作者,多篇文章) ## 一对多关系,单作者-多文章,不可少 ## (ForeignKey)总在多的那边定义,关系(relationship...生成,默认为类名称的小写形式,多个单词通过下划线分隔 author_id = db.Column(db.Integer, db.ForeignKey('author.id')) # # 字段...return '' % self.name # 设置双向属性后,我们既可以通过集合属性操作关系,也可通过标量关系属性操作关系 多对一关系(多个市民都在同一个城市) # 总在多的一侧定义...## 多对一关系中,和关系属性都在多的一侧定义 ## 这里的关系属性是标量关系属性(返回单一数据) class Citizen(db.Model): id = db.Column(db.Integer...关联表不存储数据,只用来存储关系两侧模型的对应关系 定义关系两侧的关系函数时,需要添加一个secondary参数,值设为关联表的名称 关联表由使用db.Table类定义,传入的第一个参数为关联表的名称

1.6K20

Flask-SQLAlchemy安装及设置

文档地址:http://docs.jinkan.org/docs/flask-sqlalchemy 安装 安装 flask-sqlalchemy pip install flask-sqlalchemy...指定,而且程序使用的数据库必须保存到Flask配置对象的 SQLALCHEMY_DATABASE_URI 中 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql...(打印sql语句) SQLALCHEMY_RECORD_QUERIES 可以用于显式地禁用或启用查询记录。查询记录 在调试或测试模式自动启用。更多信息见get_debug_queries()。...注意如果 使用了 MySQL , Flask-SQLALchemy 自动设定 这个值为 2 小时 连接其他数据库 完整连接 URI 列表请跳转到 SQLAlchemy 下面的文档 (Supported...常用的SQLAlchemy关系选项 选项名 说明 backref 在关系的另一模型中添加反向引用 primary join 明确指定两个模型之间使用的联结条件 uselist 如果为False,不使用列表

3.1K50

Flask入门到放弃(四)—— 数据库

Flask-SQLAlchemy 中,查询操作是通过 query 对象操作数据。 最基本的查询是返回表中所有数据,可以通过过滤器进行更精确的数据库查询。...),则会在加载完Teacher对象后,就立即加载与其关联的对象,这样会让总查询数量减少,但如果返回的条目数量很多,就会比较慢 设置为 subquery 的话,teacher.courses 返回所有当前老师关联的课程列表...常用的SQLAlchemy查询结果的方法 方法 说明 all() 以列表形式返回查询的所有结果 first() 返回查询的第一个结果,如果未查到,返回None first_or_404() 返回查询的第一个结果...) 查询课程所属讲师 course = Course.query.get(2) print(course) # 根据只能查询到ID数值, SQLAlchemy不会帮我们把ID转换成模型 print...( course.teacher_id ) # 要获取对应的模型数据,需要找到主键模型里面的 db.relationship 里面的 backref print( course.teacher.name

3.1K20

MySQL基础(快速复习版)

一、语法 select 查询列表 from 表名 where 筛选条件 二、筛选条件的分类 1、简单条件运算符 > !...】 四、SQL99语法 1、内连接 语法: select 查询列表from 表1 别名【inner】 join 表2 别名 on 连接条件where 筛选条件group by 分组列表having 分组后的筛选...查询列表from 表1 别名left|right|full【outer】 join 表2 别名 on 连接条件where 筛选条件group by 分组列表having 分组后的筛选order by...,该字段的值引用了另外的表的字段 主键和唯一 1、区别: ①、一个表至多有一个主键,但可以有多个唯一 ②、主键不允许为空,唯一可以为空 2、相同点 都具有唯一性 都支持组合,但不推荐 : 1、用于限制两个表的关系...添加 alter table 表名 add【 constraint 约束名】 foreign key(字段名) references 主表(被引用列); 删除外 alter table 表名 drop

4.5K20

Flask_数据库

在准备把数据写入数据库前,要先把数据添加到会话中,然后调用commit()方法提交会话 Flask-SQLAlchemy中,查询操作通过query 对象操作....password = db.Column(db.String(64)) role_id = db.Column(db.Integer, db.ForeignKey('roles.id')) # 定义...,指向一方的主键 一方定义关系,多方定义 __tablename__ 定义表名,如果未定义,默认创建同类名的表名 realtionship 描述了Role和User的关系,第一个参数为对应参照的类名...Role对象后,就立即加载与其关联的对象,这样会让总查询数量减少,但如果返回的条目数量很多,就会比较慢 设置为 subquery 的话,role.users 返回所有数据列表 另外,也可以设置为动态方式...='wang',User.email.endswith('163.com'))).all() 常用的SQLAlchemy 查询执行器 方法 说明 all() 以列表形式返回查询的所有结果 first()

1.3K50

MySQL数据库完整知识点梳理----保姆级教程!!!

拼接字符串 ifnull函数--判断是否为空 条件查询部分知识点整理 语法 根据筛选条件不同进行分类 1.条件表达式筛选 2.按照逻辑表达式筛选 3.模糊查询 like的使用 in的使用 is...null和is not null的使用 安全等于 排序查询 语法 添加筛选条件: 表达式排序: 别名排序: 函数排序: 多个字段排序: 总结 常见函数 调用 分类 单行函数 字符函数...group by后的字段 分组查询 Group by 子句 例子 添加分组后的条件筛选要用having,不能用where 分组查询筛选条件分为两类数据源 分组前筛选 分组后筛选 注意 表达式,函数和别名分组...语法 select 查询列表 from 表名 where 筛选条件; 根据筛选条件不同进行分类 1.条件表达式筛选 条件运算符: , = ,(不等于...: 全连接: 全连接去交集: ---- 子查询 含义 出现在其他语句中的select语句,成为子查询或者内查询 外部的查询语句,成为主查询或外查询 分类 查询出现的位置

5.8K10
领券