Flask框架:掌握数据库过滤条件、外键及ORM操作

2 下载量 119 浏览量 更新于2024-08-31 收藏 303KB PDF 举报
本篇文章主要介绍了在Flask框架下,如何利用SQLAlchemy库进行数据库操作,特别是针对数据过滤条件、外键及其四种约束、表关系以及反向查询模型属性的学习。作者首先强调了过滤功能在数据提取中的重要性,并详细列举了在Python编程中常用的数据库过滤条件,包括: 1. **equals**:用于匹配完全相等的数据,例如 `filter(Article.title == 'example')`。 2. **not equals**:不等于操作,如 `filter(Article.price != 100)`。 3. **like**:模式匹配,用于模糊查询,如 `filter(Article.title.like('%Python%'))`。 4. **in**:用于列表或集合中的值匹配,如 `filter(Article.id.in_([1, 2, 3]))`。 5. **not in**:不在给定列表或集合中的值匹配,如 `filter(Article.category.notin_(['category1']))`。 6. **is null** 和 **is not null**:用于检查字段是否为空,如 `filter(Article.description.is_(None))`。 7. **and** 和 **or**:逻辑运算符,用于组合多个过滤条件,如 `filter(Article.status == 'active' and Article.created_at > '2022-01-01')`。 文章接着引入了数据库连接配置,使用了MySQL数据库,并通过`create_engine`创建数据库引擎,`declarative_base`创建一个基类来定义模型。在这里,`Article`类被定义为一个数据库模型,它有一个自增主键`id`、标题`title`(非空字符串)和价格`price`(浮点数)。`__repr__`和`__str__`方法提供了对象的简洁表示形式。 为了与数据库交互,作者使用了ORM(对象关系映射)技术,通过`sessionmaker`创建会话对象,进一步将模型映射到数据库中,调用`Base.metadata.create_all()`来在数据库中创建相应的表。 最后,文章提到了在实际应用中,可能需要进行反向查询,即根据模型属性来获取相关联的数据,这通常涉及一对多或一对一的关系。然而,这部分内容并未在提供的片段中详细阐述,但读者可以想象在Flask框架中,如果`Article`表中存在一个外键关联到另一个表(如评论表),可以通过查询`Article.comments`来获取与其相关的评论。 这篇文章深入浅出地讲解了Flask框架下如何利用SQLAlchemy进行数据库操作,以及在处理数据过滤、表关系和模型属性时的实用技巧。对于想要进一步提升数据库管理能力的开发者来说,这是一个很好的学习资源。