一篇文章搞懂flask_sqlalchemy常用操作

简介: 这篇文章介绍了Flask框架中SQLAlchemy库的常用操作,包括查询、删除和更新数据的方法和技巧。

一.查询:

1.1 查询所有

模型类.query.all() 等价于 select * from user
如果有条件的查询:
模型类.query.filter_by(字段名=值) --> select * from user where 字段名=值
模型类.query.filter_by(字段名=值).first() --> select * from user where 字段=值 limit=1

如:

select * from user where age>17 and gender ='男'
select * from user username like 'zhang%'
select * from user where rdatetime > xxx rdatetime <xxx;

注意:
模型类.query.filter() 里边是布尔的条件模型类.query.filter(模型名.字段名==值)
模型类.query.filter_by() 里边是一个等值模型类.query.filter_by(字段名=值)

1.2 模型类.query.filter()

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

User.query.filter(User.username.endwith('z')).all() like '%z'
User.query.filter(User.username.startwith('z')).all() like 'z%'
User.query.filter(User.username.contains('z')).all() like '%z%'
User.query.filter(User.username.like('%z%')).all()

1.3 多条件:

或者:or_ 并且:and_ 非:not_

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

User.query.filter(and_(User.username.like('z%'),User.rdatetime > '2020-10-22 23:58:23')).all()
select * from user where username like 'z%' and rdatetime > '2020-10-22 23:58:23'

1.4 若过滤时间和整型:> ,< ,>=, <=,!=

age:17,18,19,20,22,23,25…

select * from user where age in [17,18,22]

1.5 排序:order_by

user_list=User.query.filter(User.username.contains('z')).order_by(-User.rdatetime).all()
user_list=User.query.order_by(-User.id).order_by(-User.rdatetime).all()

对所有得进行排序,注意order_by()的参数:
1.直接是字符串:‘字段名’ 这样不能排序
2.模型.字段名:模型.字段 order_by(-模型.字段) 倒叙 还可以使用desc()函数

1.6 限制:limit

limit的使用 + offset
user_list=User.query.limit(2).all() 默认获取两条数据
user_list=User.query.offset(2).limit(2).all() 跳过两条记录再获取两条记录

Jquery CDN:引用网上的jQuery资源,加快速度,减少项目的复杂度和空间,更加方便与用户快速获取js效果。

查询小总结:
1.User.query.all() 所有
2.User.query.get(pk) 一个
3.User.query.filter() * ???
如果要检索的字段是字符串(varchar,db.String)
User.username.startwith(‘’)
User.username.endwitd(‘’)
User.username.contains(‘’)
User.username.like(‘’) 传入的参数需要加%
User.username.in_([‘’,‘’,‘’,‘’])
User.username==
如果要检索的字段是整型或日期类型:
User.age.lt(18) 双下划线
User.rdatetime.gt(‘…’)
User.age.le(18)
User.age.ge(18)
User.age.between(18,25)
多个条件一起检索:and_ or_
非得条件:or_

排序:order_by()
获取指定数量:limit() offset()
4.User.query.filter_by(username=‘xxx’) User.query.filter(username== ‘xxx’)

二. 删除

2.1 逻辑删除

其实就是更新(定义数据库中的表的时候,添加一个字段名为isdelete,通过此字段控制是否删除)
id=request.args.get(id) 用于接收get请求中的参数
user=User.query.get(id)
user.isdelete=True
db.session.commit()

2.2 物理删除

(彻底从数据库中删除)
id=request.args.get(id) 用于接收get请求中的参数,若为post就把args替换成form
user=User.query.get(id)
db.session.delete(user)
db.session.commit()

三. 更新

id=request.args.get(id)
user=User.query.get(id)

修改对象的属性

user.username=xxx
user.phone=xxx

提交修改

db.session.commit()

需要提交:
添加
user=User()
user.xxx=xxx
db.session.add(user)
db.session.commit()

删除
user=User.query.get(id)
db.session.delete(user)
db.session.commit()

更新
user=User.query.get(id) #获取数据库中的对象

修改对象的属性

user.username=xxx
user.phone=xxx

提交修改

db.session.commit()

相关文章
|
5月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
508 77
|
数据库 Python
【Flask】Flask-SQLAlchemy的增删改查(CRUD)操作
Flask-SQLAlchemy的增删改查(CRUD)操作
|
SQL JSON 关系型数据库
SqlAlchemy 2.0 中文文档(二)(2)
SqlAlchemy 2.0 中文文档(二)
301 2
|
数据采集 Python
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
|
12月前
|
数据采集 调度 数据库
flask-apscheduler的使用与示例
flask-apscheduler的使用与示例
748 4
|
SQL 测试技术 数据库
Flask与SQLAlchemy的神秘力量:如何让你的数据库飞起来?
【8月更文挑战第31天】在现代Web开发中,Flask和SQLAlchemy是热门技术栈,前者是轻量级Web框架,后者为强大的ORM库。本文介绍如何在Flask项目中集成SQLAlchemy,通过示例展示数据库操作方法,并分享最佳实践,如熟悉ORM、编写测试及适度使用SQL语句,以提升开发效率和代码质量。
490 0
|
NoSQL 大数据 Redis
使用 Flask 和 Celery 构建异步任务处理
使用 Flask 和 Celery 构建异步任务处理
560 2
|
SQL 关系型数据库 MySQL
SQLAlchemy使用指南
**SQLAlchemy 指南**:Python SQL 工具包,提供数据库高级抽象。安装:`pip install sqlalchemy`,加上数据库驱动(如 MySQL: `pip install mysql-connector-python`)。基础使用包括:创建数据库连接、定义模型、创建表、添加/查询/更新/删除数据。高级功能涉及关系映射、原生 SQL 语句及 SQLAlchemy Core。推荐阅读官方文档以深入了解。
823 1
|
XML 安全 前端开发
必知的技术知识:jinjia2基本用法
必知的技术知识:jinjia2基本用法
449 1
|
SQL 自然语言处理 数据库
SqlAlchemy 2.0 中文文档(二)(3)
SqlAlchemy 2.0 中文文档(二)
238 2