14-模型 - 增删改查

news2024/11/17 16:32:26

增:

# 1. 找到模型类并创建对象
user = User()
# 2. 给对象的属性赋值
user.username = username
user.password = password
user.phone = phone
# 3. 将user对象添加到session中 (类似缓存)
db.session.add(user)
# 4. 提交数据
db.session.commit()

删:

# 两种删除:

# 1. 逻辑删除(定义数据库中的表的时候,添加一个字段isdelete,通过此字段控制是否删除)
    id = request.args.get('id')
    # 获取该id的用户
    user=User.query.get(id)
    # 逻辑删除:
    user.isdelete = True
    # 提交
    db.session.commit()
 
 
# 2. 物理删除(彻底从数据库删除)
    id = request.args.get('id')
    user = User.query.get(id)
    # 将对象放到缓存准备删除
    db.session.delete(user)
    # 提交删除
    db.session.commit()

改:

id = request.form.get("id")
# 找用户
user = User.query.get(id)
# 改用户信息
user.phone = phone
user.username = username
# 提交
db.session.commit()

查:

# 1. 查询所有
模型类.query.all()  # select * from user;


# 2. filter_by()查询
模型类.query.filter_by()     # 里面是一个等值  模型类.query.filter_by(字段名 = 值)
模型类.query.filter_by(字段名=值).all  #返回一个列表 select * from user where 字段名=值;
模型类.query.filter_by(字段名=值).first #返回一个对象, select * from user where 字段名=值 limit(1);



# 3.filter()查询
    模型类.query.filter() # 里面是布尔的条件  模型类.query.filter(模型名.字段名 == 值)

    (1). filter可以加筛选条件
     '''
       User.query.filter(User.username.startswith("c")).all() # 以...开头
       User.query.filter(User.username.endswith("o")).all()  # 以...结尾
       User.query.filter(User.username.contains("c")).all()  # 包含
       User.query.filter(User.username.like("%2%")).all()   # 模糊查询,需要加%
     '''

    (2). 多条件查询: 与: and_ ; 或: or_ ; 非: not_ ; 在...里: in_
         # __gt__, __lt__,__ge__(gt equal),__le__(le equal)
         # 通常应用在范围(整形,日期);也可直接使用 > < >= <= !=

         from sqlalchemy import or_, and_,not_,in_ 
        # or
        # select * from user where username like "1%" or username like '%c%';
        User.query.filter(or_(User.username.like("1%"), User.username.contains("c"))).all()

        # and
        # select * from user where username like "%c%" and radtetime < 'xxx'
        User.query.filter(and_(User.username.contains("c"), User.radtetime.__gt__("2023-05-19 17:00:15"))).all()

        # 取反
         User.query.filter(not_(User.username.contains("c") )).all()

        # in
        User.query.filter(User.phone.in_(["13800000000","17700000000"])).all()


# 4. 排序: order_by 
     # 对所有的进行排序
     User.query.order_by(-User.id).all() 

     # 先筛选后排序
     User.query.filter(User.username.contains('o')).order_by(-User.radtetime).all()



# 5. 限制: limit + offset:偏移
     User.query.limit(2).all()  # 默认获取前2条
     User.query.offset(2).limit(2).all()  # 跳过两条记录,在获取两条


# 6. 总结
    (1). User.query.all()  # 所有
    (2). User.query.get(pk)  # 通过主键查询一个
    (3). User.query.filter()  *
        # 如果要检索的字段是字符串类型(varchar,db。String):
        User.username.startswith("")
        User.username.endswith("")
        User.username.contains("")
        User.username.like("")
        User.username.in_(["",""])
        User.username=="zzz"
 
        # 如果要检索的字段是整形或者日期类型:
        User.age.__lt__(18)
        User.redatetime.__gt__("......")
        User.age.__le__(18) # <=
        User.age.__ge__(18) # >=
        User.age.between(15,30) # 区间范围
 
    (4). 多个条件一起检索: and_,or_,not_
 
    (5). 排序: order_by()
 
    (6). 获取指定数量: limit() offset()

案例: 注册 & 登录

前置准备: 搭建蓝图

        1. 创建模型(数据库)

                (1). apps / user /models.py 创建模型类

                (2). app.py 引入模型类

                (3). 终端执行,生成模型

2. 首页展示

        (1). apps / user / view.py 编写视图函数

        (2). templates / user / conter.html 编写首页视图

        

 3. 用户注册

        (1). apps / user / view.py 编写视图函数

        (2). templates / user / conter.html 预留注册跳转功能

        (3). templates / user / register.html 编写注册页面

       

4. 用户登录

        (1). apps / user / view.py 编写视图函数

        (2). templates / user / conter.html 预留登录跳转功能

        (3). templates / user / login.html 编写登录页面

   

 

5. 首页检索(搜索)

        (1). apps / user / view.py 编写视图函数

        (2). templates / user / conter.html 编写搜索功能

        (3). templates / user / conter.html 编写js实现搜索

6. 用户删除

        (1). apps / user / view.py 编写视图函数

        (2). templates / user / conter.html 首页循环渲染数据时,获取用户id

   

7. 用户更新

        (1). apps / user / view.py 编写视图函数

        (2). templates / user / conter.html 首页循环渲染数据时,获取用户id,点击跳转到修改页面

        (3). templates / user / update.html 编写修改页面

       

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/928811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++核心编程:类和对象

总览 C 面向对象的三大特性&#xff1a; 封装&#xff0c;继承&#xff0c;多态 C认为 万事万物都皆为对象&#xff0c;对象上有其属性和行为 封装 封装的意义 封装是C面向对象的三大特征之一 封装的意义&#xff1a; 将属性和行为作为一个整体&#xff0c;表现生活中的事…

芯科科技推出专为Amazon Sidewalk优化的全新片上系统和开发工具,加速Sidewalk网络采用

芯科科技为Sidewalk开发提供专家级支持 中国&#xff0c;北京 - 2023年8月22日 – 致力于以安全、智能无线连接技术&#xff0c;建立更互联世界的全球领导厂商Silicon Labs&#xff08;亦称“芯科科技”&#xff0c;NASDAQ&#xff1a;SLAB&#xff09;今日在其一年一度的第四…

安防监控平台EasyCVR视频汇聚平台增加首页告警类型的详细介绍

安防监控/视频集中存储/云存储EasyCVR视频汇聚平台&#xff0c;可支持海量视频的轻量化接入与汇聚管理。平台能提供视频存储磁盘阵列、视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联、H.265自动转码等…

kubernetes--技术文档--可视化管理界面dashboard安装部署

阿丹&#xff1a; 使用官方提供的可视化界面来完成。 Kubernetes Dashboard是Kubernetes集群的Web UI&#xff0c;用户可以通过Dashboard进行管理集群内所有资源对象&#xff0c;例如查看资源对象的运行情况&#xff0c;部署新的资源对象&#xff0c;伸缩Deployment中的Pod数量…

SAP 之如何定义功能范围Function Area

目录 目录 前言 一、注意点 二、使用步骤 1. Step by step 2. 其它功能 总结 前言 在SAP中&#xff0c;FA功能范围是一个组织单元&#xff0c;一般根据活动对产生的运营费用进行分类。例如生产、管理、销售、研发等&#xff0c;可以分配给成本中心Cctr、GL总账科目、Ord…

电压放大器的用途有哪些

电压放大器是一种常见的电子设备&#xff0c;用于将输入信号的电压放大到所需的输出电压水平。它在各种领域中都有广泛的应用。下面西安安泰电子将介绍电压放大器的主要用途。 音频放大&#xff1a;电压放大器在音频领域中扮演着重要角色。音频放大器是电压放大器的一种特殊形式…

支付事-乐刷支付母公司移卡发布2023年中期业绩报告

8月24日晚间&#xff0c;乐刷支付母公司移卡发布2023年中期业绩报告。 2023年上半年&#xff0c;移卡实现收入20.62亿元&#xff0c;同比增长25.6%&#xff1b;经调整EBITDA2.91亿元&#xff1b;同比增长317.4%。业绩表现优异主要来源于主营支付业务的大幅增长。 中期业绩报告…

MIA文献阅读 —— 深度学习在医学图像分析中的最新进展及临床应用【2022】

目录 0 摘要1 引言2 深度学习方法概述2.1 监督式学习2.2 无监督学习2.2.1 自编码器 (Autoencoders)2.2.2 生成对抗网络(GANs)2.2.3 自监督学习 2.3. 半监督学习2.4 提高性能的策略2.4.1 注意力机制2.4.2 领域知识2.4.3 估计的不确定性 3 深度学习应用3.1 分类3.1.1 监督分类3.1…

Camunda 7.x 系列【28】定时器启动事件

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 前言2. 概述3. 案例演示3.1 建模3.2 固定时间日期3.2 持续时间3.3 重复间隔1. 前言 Sta…

qml相关知识1

qml相关知识1 QtQuick.Controls 哪个版本支持TreeModel 和 TreeItemqt5.12开始&#xff0c;TreeItem 类被删除&#xff0c;无法使用delegate 什么时候可以用Qt5.15中没有 import QtQuick.Controls 1吗&#xff0c;哪个版本有control1qml如何两种版本的controls混用&#xff08;…

2023中国算力大会 | 中科驭数加入DPU推进计划,探讨DPU如何激活算网融合新基建

8月18日&#xff0c;由工业和信息化部、宁夏回族自治区人民政府共同主办的2023中国算力大会在宁夏银川隆重召开。作为DPU算力基础设施领军企业&#xff0c;中科驭数产品运营部副总经理曹辉受邀在中国信通院承办的算网融合分论坛发表主题演讲《释放极致算力 DPU激活算网融合新基…

SMC状态机 讲解1 XX.sm文件详解

SMC状态机 讲解1.4 XX.sm文件 1、Task类2、FSM任务3、创建SMC.sm文件4、定义FSM状态5、定义转换 transition6、定义FSM转换动作7、定义FSM默认转换8、定义状态Entry/Exit 动作9、连接Task与Task FSM 1、Task类 SMC为对象(不是进程或应用程序&#xff0c;而是单个对象)生成有限…

IT运维:使用数据分析平台监控DELL服务器

概述 在企业日常运维中&#xff0c;我们有着大量的服务器设备&#xff0c;设备故障一般可以通过常用的监控软件实现自动告警&#xff0c;但如果在管理运维中我们要做的不仅仅是发现故障&#xff0c;处理硬件故障&#xff0c;我们还需要进一步的了解&#xff0c;今年一共出现了多…

【Linux应用部署篇】在CSDN云IDE平台部署Etherpad文档编辑器

【Linux应用部署篇】在CSDN云IDE平台部署Etherpad文档编辑器 一、CSDN云IDE平台介绍1.1 CSDN云IDE平台简介1.2 CSDN云IDE平台特点 二、本次实践介绍2.1 本次实践介绍2.2 Etherpad简介 三、登录CSDN云IDE平台3.1 登录CSDN开发云3.2 登录云IDE3.3 新建工作空间3.4 进入工作空间 四…

【测试流程】敏捷软件测试流程分享

一、背景 分享一套高效可靠的软件测试流程&#xff0c;目的是更好的保障产品质量&#xff0c;更高效的完成测试任务&#xff0c;提供给需要的朋友。 二、软件测试流程

Web端报错

Chunk-vendors.2a8c602b.js&#xff1a;48混合内容&#xff1a;位于‘https://3323.sfdy13168.com/#/goodsManage’的页面通过HTTPS加载&#xff0c;但请求了不安全的XMLHttpRequest端点‘http://110.42.2.202:8087/file/upload’.。此请求已被阻止&#xff1b;内容必须通过HTT…

STM32CubeIDE(Timer)

目录 一、基本定时器 1、TIM6和TIM7简介 2、TIM6和TIM7主要特性 3、CubeMX配置 4、代码编写 二、通用定时器 1、简介 2、主要功能 3、生成PWM波 3.1 固定占空比 3.2 可变占空比 4、输出比较 5、输入PWM 5.1 CubeMX配置 5.2 代码编写 一、基本定时器 1、TIM6和TI…

IO多路转接(复用)多线程 select 并发

1.select // sizeof(fd_set) 128 1024 #include <sys/time.h> #include <sys/types.h> #include <unistd.h> #include <sys/select.h> int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);- 参数…

PyQt open3d 加载 显示点云

PyQt加载 显示点云&#xff0c;已经有三种方式&#xff0c;使用 open3d; 使用 vtk; 使用 pcl; 下面是使用 open3d: import sys import open3d as o3d import numpy as np import pyqtgraph.opengl as gl from PyQt5.QtWidgets import QApplication, QVBoxLayout, QWidget, QFi…

yolov5的xml文件转txt文件格式(详细解释与完整代码供应)

文章目录 前言一、yolov5训练数据格式介绍1、txt的类别对应说明2、txt的文件说明3、txt文件格式3、yolov5训练文件形式 二、xml文件读取代码解读三、xml文件转txt文件1、xml转txt代码解读2、保存txt文件代码解读 四、完整代码 前言 本文章实现xml数据格式转yolov5的txt格式&am…