flask操作(增删改查操作)
增加数据
from .models import Goods
from app.extensions import db
goods1 = Goods(name='魅族18s', price=3400, cate_id=4)
goods2 = Goods(name='华为P40', price=5200, cate_id=4)
goods3 = Goods(name='OPPO Note3', price=2759, cate_id=4)
db.session.add(goods1) # 添加一条数据
db.session.add_all([goods2, goods3]) # 添加多条数据
db.commit() # 提交
查询数据
# 查询全部数据
goods = Goods.query.all()
# 按照条件过滤, 结果为查询集,需要循环解析
goods = Goods.query.filter_by(name='华为P40')
# 按照 id主键查询,得到商品对象, 不存在,结果为None
goods = Goods.query.get(1)
# 按照id查询,不存在,抛出404异常
goods = Goods.query.get_or_404(100)
修改数据
# 先查询对象,后修改属性,最后提交即可
goods = Goods.query.get(1)
goods.sales = 200
db.session.commit()
# 使用filter_by先过滤,后传入字典更新,最后提交,此种方式,同时可以更新多条记录
Goods.query.filter_by(id=2).update({'stock':3000})
db.session.commit()
删除数据
# 先查询对象,后删除对象, 最后提交
goods6 = Goods.query.get(6)
db.session.delete(goods6)
db.session.commit()
# 使用filter_by先过滤,后删除,最后提交,此种方式,同时可以删除多条记录
Goods.query.filter_by(id=5).delete()
db.session.commit()
查询高级操作
filter方法中,可以自定义查询操作,结果都是查询集
比较查询
# 查询id大于3的所有商品
goods = Goods.query.filter(Goods.id > 3).all()
# 查询 id 不等于 3的所有商品
goods = Goods.query.filter(Goods.id != 3).all()
# 查询 id不等于4的所有商品
goods = Goods.query.filter(not_(Goods.id == 4)).all()
逻辑查询
from sqlalchemy import or_, and_, not_
# 满足任何一个条件即可
goods = Goods.query.filter(or_(Goods.id < 2, Goods.id > 3)).all()
goods = Goods.query.filter(Goods.id.in_([1, 3, 5]) ).all()
# 必须多个条件同时成立
goods = Goods.query.filter(and_(Goods.id < 5, Goods.id > 2)).all()
goods = Goods.query.filter(Goods.id.between(2, 6)).all()
# 多个条件之间,默认就是 且的关系
goods = Goods.query.filter(Goods.id < 4, Goods.id > 2).all()
# 查询相反结果
goods = Goods.query.filter(~(Goods.id < 4)).all()
goods = Goods.query.filter(not_(Goods.id < 4)).all()
goods = Goods.query.filter(not_(Goods.id.in_([1, 3, 5]) )).all()
空查询
# 直接判断 值是否为None
cates = Cate.query.filter(Cate.parent_id==None).all()
# 使用 is_ 方法进行判断
cates = Cate.query.filter(Cate.parent_id.is_(None)).all()
模糊查询
# 查询商品名包含 魅族的 商品信息
goods = Goods.query.filter(Goods.name.like('%魅族%') ).all()
排序
from sqlalchemy import desc, asc
# 按照价格升序排序
goods = Goods.query.order_by('price').all()
goods = Goods.query.order_by(asc('price')).all()
# 按照价格降序排序
goods = Goods.query.order_by(desc('price')).all()
分页
# 数据分页,第1页数据, 每页2条
pagination = Goods.query.order_by(desc('price')).paginate(1, 2)
# 当前页的数据
goods = paginaton.items
# 总的页码
pages = pagination.pages
# 总的记录数
total = pagination.total
# 当前页码
page = pagination.page
聚合
查询所有商品的 最大价格、最小价格、以及全部数量
from sqlalchemy import func
res = db.session.query(func.max(Goods.price), func.min(Goods.price), func.count(Goods.id) ).all()
# [(Decimal('5200.00'), Decimal('2759.00'), 4)]
res = Goods.query.with_entities(func.max(Goods.price), func.min(Goods.price), func.count(Goods.id) ).all()
# [(Decimal('5200.00'), Decimal('2759.00'), 4)]
分组
查询每类商品的 最大价格、最小价格、以及数量
res = db.session.query(Goods.cate_id,Cate.name, func.max(Goods.price), func.min(Goods.price), func.count(Goods.id) ).filter(Goods.cate_id == Cate.id).group_by(Goods.cate_id).all()
res = Goods.query.join(Cate, Goods.cate_id==Cate.id).group_by(Goods.cate_id).with_entities(Cate.id, Cate.name, func.max(Goods.price), func.min(Goods.price), func.count(Goods.id)).all()
res = Goods.query.filter(Goods.cate_id==Cate.id).group_by(Goods.cate_id).with_entities(Cate.id, Cate.name, func.max(Goods.price), func.min(Goods.price), func.count(Goods.id)).all()
# [(4, '手机', Decimal('5200.00'), Decimal('3400.00'), 3), (5, '游戏手机', Decimal('2759.00'), Decimal('2759.00'), 1)]
修改高级操作
原基础上修改
实现批量修改
# 以下两种方式都可
res = Goods.query.filter(Goods.stock < 5000).update({'stock': Goods.stock + 2000})
res2 = Goods.query.filter(Goods.stock < 3000).update({Goods.stock: Goods.stock + 3000})
# 注意:更新之后,需要保存
db.session.commit()
修改单个
goods = Goods.query.get(3)
goods.stock -= 400
db.session.commit()
flask操作(增删改查操作)的更多相关文章
- Mybatis学习(二) - CRUD操作(增删改查操作)
直接上例子: 1.项目结构: 2.具体代码及配置 User.java package com.mybatis.bean; public class User { private int id; pri ...
- SQLAlchemy02 /SQLAlchemy对数据的增删改查操作、属性常用数据类型详解
SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 目录 SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 1.用se ...
- SQLAlchemy(二):SQLAlchemy对数据的增删改查操作、属性常用数据类型详解
SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 目录 SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 1.用se ...
- mongoVUE的增删改查操作使用说明
mongoVUE的增删改查操作使用说明 一. 查询 1. 精确查询 1)右键点击集合名,再左键点击Find 或者直接点击工具栏上的Find 2)查询界面,包括四个区域 {Find}区,查询条件格式{& ...
- (转)SQLite数据库增删改查操作
原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...
- 详谈easyui datagrid增删改查操作
转自:http://blog.csdn.net/abauch_d/article/details/7734395 前几天我把easyui dadtagrid的增删改查的实现代码贴了出来,发现访问量达到 ...
- PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码
PHP程序中使用PDO对象实现对数据库的增删改查操作(PHP+smarty) dbconn.php <?php //------------------------使用PDO方式连接数据库文件- ...
- 浅谈dataGridView使用,以及画面布局使用属性,对datagridview进行增删改查操作,以及委托使用技巧
通过几天的努力后,对datagridview使用作一些简要的介绍,该实例主要运用与通过对datagridview操作.对数据进行增删改查操作时,进行逻辑判断执行相关操作.简单的使用委托功能,实 ...
- 05_Elasticsearch 单模式下API的增删改查操作
05_Elasticsearch 单模式下API的增删改查操作 安装marvel 插件: zjtest7-redis:/usr/local/elasticsearch-2.3.4# bin/plugi ...
- JDBC连接数据库及增删改查操作
什么是JDBC?Java语言访问数据库的一种规范,是一套APIJDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类 ...
随机推荐
- openresty lua-resty-string md5 sha aes random string
安装 https://github.com/openresty/lua-resty-string $ sudo opm get openresty/lua-resty-string $ ls -al ...
- (一)羽夏看C语言——简述
"羽夏看C语言"介绍什么 本系列从汇编的角度,比较翔实的介绍C语言.C++和C其实是一样的东西,C++的编译器只是更强大,更能帮助我们写代码,例如模板.没有特殊说明,本系列不会 ...
- Leetcode 146. LRU 缓存机制
前言 缓存是一种提高数据读取性能的技术,在计算机中cpu和主内存之间读取数据存在差异,CPU和主内存之间有CPU缓存,而且在内存和硬盘有内存缓存.当主存容量远大于CPU缓存,或磁盘容量远大于主存时,哪 ...
- 洛谷P2338 Bessie Slows Down S 题解
题目 [USACO14JAN]Bessie Slows Down S 题解 这道题其实蛮简单的,不知道为什么难度划到了提高+,个人觉得这难度大概就是普及左右. 具体说说怎么做吧,简单模拟一下即可,始终 ...
- Python - 执行cmd命令
python操作cmd 我们通常可以使用os模块的命令进行执行cmd 方法一:os.system os.system(执行的命令) # 源码 def system(*args, **kwargs): ...
- Abp Vnext3 vue-admin-template(三获取用户信息)
因为获取用户比较简单,只需要把用户名及头像地址赋值即可(也许理解错误,如果发现请告知谢谢), 首先将src\api\usr.js中的url请求地址改为以下代码 export function getI ...
- 硕盟type-c转接头|四合一多功能扩展坞
硕盟SM-T54是一款 TYPE C转HDMI+VGA+USB3.0+PD3.0四合一多功能扩展坞,支持四口同时使用,您可以将含有USB 3.1协议的电脑主机,通过此产品连接到具有HDMI或VGA的显 ...
- python库--pandas--DataFrame
转换 索引,迭代 运算符 功能应用,分组及窗口 计算/描述统计 重新索引/选择/标签操作 缺失数据处理 形状变换/排序/转置 组合/加入/合并 时间序列相关 ...
- VS Code + WSL 搭建 RaspberryPi Pico 开发环境
前面老周写一堆 .NET 与树莓派相关的水文.其实使用的是.net的 IOT 库,并不只是树莓派,其他运行 Linux 的开发板都适用,只要有 GPIO 就行.老周好像在哪看到过,有 USB 转GPI ...
- Win7 ASP连接数据库“未找到提供程序.该程序可能未正确安装”问题
是自己装的64位Windows 7系统的原因,默认64位环境下,IIS应用程序池未启用32位应用程序,我们只需要启用一下就可以了.打开IIS 7,定位到"应用程序池",然后选择使用 ...