Python Flask-SQLAlchemy 数据库操作详解

需积分: 50 0 下载量 137 浏览量 更新于2024-08-17 收藏 14.19MB PPT 举报
"数据库基本操作-Python-三大框架课件" 本资源主要涵盖了Python中Flask-SQLAlchemy框架关于数据库的基本操作,包括模型定义、数据插入、查询、更新和删除,以及模型之间的关联关系。Flask-SQLAlchemy是Flask框架的一个扩展,它简化了SQLAlchemy在Web应用中的使用。 首先,Flask-SQLAlchemy中的数据操作通过`db.session`进行管理。插入操作需要先将数据添加到会话中,然后调用`commit()`方法提交。例如,创建`Role`和`User`模型,这两个模型之间有一对多的关系,`Role`可以有多个`User`,而每个`User`只能属于一个`Role`。这种关系通过`db.relationship`来定义,`backref`参数用于在反向方向上建立引用。 查询操作是通过`query`对象完成的,可以返回表中的所有数据或通过过滤器进行精确查询。例如,可以使用`filter_by`、`filter`、`get`等方法进行不同类型的查询。此外,`first()`返回第一条记录,`all()`返回所有记录。 在模型定义时,需要指定表名、列名和数据类型,如`db.Column(db.Integer, primary_key=True)`表示整型主键,`db.relationship`定义关联关系。在实际应用中,可以使用`db.create_all()`创建所有定义的表,`db.drop_all()`删除所有表,`db.session.add()`和`db.session.commit()`用于添加和保存数据到数据库。 在关联关系中,`lazy`参数控制何时加载关联对象。设置为`'dynamic'`时,关联对象在实际需要时才加载,可以减少不必要的数据库交互,适用于大数据量的情况。例如,`role.users`返回一个查询对象,可以在其上进行更多的查询操作,如排序后再返回结果。 多对多关系通常需要一个中间表,如`registrations`,来存储两个模型之间的映射关系。`secondary`参数用于指定中间表,`backref`同样用于反向引用。 查询过滤器的示例包括`filter_by`(精确匹配)、`filter`(模糊匹配)、`endswith`(字符串结尾匹配)、`!=`(不等于)、`not_`(逻辑非)等。可以组合使用这些过滤器进行复杂查询。同时,可以使用`all()`、`first()`、`get()`等方法获取查询结果。 此外,还可以进行分页查询,通过`offset`和`limit`设置查询的起始位置和数量,实现数据的分页展示。 该资源提供了Flask-SQLAlchemy中数据库操作的详细指南,适合学习和参考Python Web开发中与数据库交互的基础知识。