flask+SQLALchemy查询总结

Flask-SQLAlchemy 查询操作详解
本文主要介绍了使用 Flask 框架结合 SQLAlchemy 进行数据库查询的基本操作,包括查询、排序、限制等关键功能。通过实例展示了如何利用 order_by 进行数据排序,以及如何使用 limit 方法来限制返回的数据条数。

一、查询

1. 模型类.query.filter().all()   ----->  列表
2. 模型类.query.filter().first()   ----->  对象

# 等值查询
User.query.filter_by(username='zhangsan')

# 模糊查询
# select * from user where username like '%z'
User.query.filter(User.userName.endswith('z')).all()  # 以z结束的

# select * from user where username like 'z%'
User.query.filter(User.userName.startswith('z')).all()  # 以z开始的

# select * from user where username like '%z%'
User.query.filter(User.userName.contains('z')).all()  # 包含

User.query.filter(User.userName.like('z%')).all()


###  多条件查询
from sqlalchemy import and_, or_, not_   #  导入包
并: and_    或: or_    非: not_

# select * from user where username like 'z%' or username like '%i%'
User.query.filter(or_(User.username.like('z%'), User.username.contains('i'))).all()

# select * from user where username like '%i%' and rdatetime < 'xxx'
User.query.filter(and_(User.userName.contains('i'), User.rdatetime.__gt__('2020-05-25 10:30:00'))).all()
User.
在使用 Flask 框架结合 SQLAlchemy 进行开发时,可以通过 Flask-SQLAlchemy 扩展来简化数据库操作和集成流程。以下是详细的集成教程及使用指南: ### 初始化 Flask 应用与 SQLAlchemy 首先需要导入必要的模块,并初始化 Flask 应用与 SQLAlchemy 实例。以下是一个基础示例代码: ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 设置数据库 URI,例如 SQLite 数据库文件路径 app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db' # 禁止 Flask-SQLAlchemy 跟踪修改以节省资源 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 初始化 SQLAlchemy db = SQLAlchemy(app) ``` 通过以上配置,Flask 应用将能够连接到指定的数据库,并利用 SQLAlchemy 提供的对象关系映射(ORM)功能进行数据建模与操作 [^4]。 --- ### 定义模型类 在 Flask-SQLAlchemy 中,开发者可以通过定义模型类来创建数据库表结构。每个模型类对应一个数据库表,类属性则代表表中的列。 ```python class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self): return f'<User {self.username}>' ``` 上述代码定义了一个 `User` 模型,包含 `id`、`username` 和 `email` 三个字段。其中 `id` 是主键,而 `username` 和 `email` 都是字符串类型且具有唯一性约束 [^1]。 --- ### 创建数据库表 在定义好模型后,可以通过 `db.create_all()` 方法创建所有未存在的表: ```python with app.app_context(): db.create_all() ``` 该方法会根据模型定义自动创建对应的数据库表结构 [^4]。 --- ### 增删改查操作 #### 插入数据 ```python new_user = User(username='john_doe', email='john@example.com') db.session.add(new_user) db.session.commit() ``` #### 查询数据 ```python # 查询所有用户 users = User.query.all() # 根据条件查询用户 user = User.query.filter_by(username='john_doe').first() ``` #### 更新数据 ```python user.email = 'new_email@example.com' db.session.commit() ``` #### 删除数据 ```python db.session.delete(user) db.session.commit() ``` 这些基本的增删改查操作展示了如何通过 Flask-SQLAlchemy 的 ORM 功能管理数据库记录 [^2]。 --- ### 使用分页功能 Flask-SQLAlchemy 提供了便捷的分页功能,适用于处理大量数据并分批展示。以下是一个分页示例: ```python page = User.query.paginate(page=1, per_page=5) for user in page.items: print(user) ``` 此代码将从第一页开始,每页获取 5 条记录。同时可以使用 `page.prev()` 和 `page.next()` 方法访问前一页或下一页的数据 [^3]。 --- ### 数据库迁移 为了在项目迭代过程中保持数据库结构的同步,可以使用 Flask-Migrate 扩展进行数据库迁移管理。首先需要初始化 Flask-Migrate: ```python from flask_migrate import Migrate migrate = Migrate(app, db) ``` 然后通过命令行工具执行迁移操作,包括生成迁移脚本和更新数据库结构 [^2]。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值