当前位置: 首页 > news >正文

14-模型 - 增删改查

增:

# 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()# inUser.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 编写修改页面

       

 

相关文章:

14-模型 - 增删改查

增: # 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. 逻辑删…...

C#与西门子PLC1500的ModbusTcp服务器通信3--搭建ModbusTcp服务器

1、打开仿真工具&#xff0c;创建PLC&#xff0c;注意创建完成后不要关闭 注意&#xff0c;这个IP地址必须与西门子虚拟网卡的IP地址及虚拟机的网卡IP地址同一网段 2、打开博途V15&#xff0c;创建项目&#xff0c;命名为Lan项目 3、添加1500系列CPU1513 4、设置设置IP地址及属…...

Linux系统编程:线程控制

目录 一. 线程的创建 1.1 pthread_create函数 1.2 线程id的本质 二. 多线程中的异常和程序替换 2.1 多线程程序异常 2.2 多线程中的程序替换 三. 线程等待 四. 线程的终止和分离 4.1 线程函数return 4.2 线程取消 pthread_cancel 4.3 线程退出 pthread_exit 4.4 线程…...

基于Java+SpringBoot+Vue前后端分离纺织品企业财务管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…...

搭建开发环境-Windows

写C# 的请出去。 然后&#xff0c;Windows 是最好的Linux发行版。搭建开发环境-WSLUbuntu...

【 Python 全栈开发 - 人工智能篇 - 45 】集成算法与聚类算法

文章目录 一、集成算法1.1 概念1.2 常用集成算法1.2.1 Bagging1.2.2 Boosting1.2.2.1 AdaBoost1.2.2.2 GBDT1.2.2.3 XgBoost 1.2.3 Stacking 二、聚类算法2.1 概念2.2 常用聚类算法2.2.1 K-means2.2.2 层次聚类2.2.3 DBSCAN算法2.2.4 AP聚类算法2.2.5 高斯混合模型聚类算法 一、…...

SSM商城项目实战:账户充值功能实现

SSM商城项目实战&#xff1a;账户充值功能实现 在一个电商平台中&#xff0c;用户账户充值是一个非常重要的功能。本文将介绍如何在SSM&#xff08;SpringSpringMVCMyBatis&#xff09;商城项目中实现账户充值功能。通过本文的指导&#xff0c;你将学会如何在项目中添加账户充…...

wireshark工具pcap文件转换

pcap详解_pcap_loop_小虎随笔的博客-CSDN博客 分析802.11无线报文hexdump内容&#xff1a;利用wireshark自带二进制工具text2pcap将hexdump内容转换为pcap文件..._weixin_30835933的博客-CSDN博客 text2pcap: 将hex转储文本转换为Wireshark可打开的pcap文件(wireshark,数据) …...

Python+TinyPNG熊猫网站自动化的压缩图片

前言 本篇在讲什么 PythonTinyPNG自动化处理图片 本篇需要什么 对Python语法有简单认知 依赖Python2.7环境 依赖TinyPNG工具 本篇的特色 具有全流程的图文教学 重实践&#xff0c;轻理论&#xff0c;快速上手 提供全流程的源码内容 ★提高阅读体验★ &#x1f449;…...

【Linux】socket 编程基础

文章目录 &#x1f4d5; 网络间的通信&#x1f4d5; socket 是什么1. socket 套接字2. 套接字描述符3. 基本的 socket 接口函数3.1 头文件3.2 socket() 函数3.3 bind() 函数struct sockaddr主机序列与网络序列 3.4 listen() 函数3.5 connect() 函数3.6 accept() 函数IP 地址风格…...

openGauss学习笔记-51 openGauss 高级特性-列存储

文章目录 openGauss学习笔记-51 openGauss 高级特性-列存储51.1 语法格式51.2 参数说明51.3 示例 openGauss学习笔记-51 openGauss 高级特性-列存储 openGauss支持行列混合存储。行存储是指将表按行存储到硬盘分区上&#xff0c;列存储是指将表按列存储到硬盘分区上。 行、列…...

ReactNative 密码生成器实战

效果展示图 使用插件 Formik 负责表单校验、监听表单提交、数据校验错误信息展示 Yup 负责表单校验规则 分析页面 从上述的展示图我们可以看到的主要元素有&#xff1a;输入框、单选按钮和按钮。其中生成的密码长度不可能很大也不可能为负数和 0&#xff0c;所以我们可以限…...

开始MySQL之路——外键关联和多表联合查询详细概述

多表查询和外键关联 实际开发中&#xff0c;一个项目通常需要很多张表才能完成。例如&#xff0c;一个商城项目就需要分类表&#xff0c;商品表&#xff0c;订单表等多张表。且这些表的数据之间存在一定的关系&#xff0c;接下来我们将在单表的基础上&#xff0c;一起学习多表…...

无涯教程-PHP - intval() 函数

PHP 7引入了一个新函数 intdiv()&#xff0c;该函数对其操作数执行整数除法并将该除法返回为int。 <?php$valueintdiv(10,3);var_dump($value);print(" ");print($value); ?> 它产生以下浏览器输出- int(3) 3 PHP - intval() 函数 - 无涯教程网无涯教程网…...

2023年国赛数学建模思路 - 案例:粒子群算法

文章目录 1 什么是粒子群算法&#xff1f;2 举个例子3 还是一个例子算法流程算法实现建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法&#xff1f; 粒子群算法&#xff08;Pa…...

【1++的数据结构】之map与set(一)

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的数据结构】 文章目录 一&#xff0c;关联式容器与键值对二&#xff0c;setset的使用 三&#xff0c;mapmap的使用 四&#xff0c;multiset与multimap 一&#xff0c;关联式容器与键值对 像l…...

Ubuntu断电重启后黑屏左上角光标闪烁,分辨率低解决办法,ubuntu系统display只有4:3 怎么办?太卡

这个问题主要是显卡驱动问题&#xff0c;按照步骤更新显卡驱动 1&#xff0c;选择metapackage 并且选择proprietary版本&#xff0c;选择版本号选择最新的版本。 2&#xff0c;具体步骤参考 前言 笔者在安装显卡驱动时并未遇到问题&#xff0c;主要是后续屏幕亮度无法调节&…...

Java 微服务当中POST form 、url、json的区别

在Java微服务的Controller中&#xff0c;你可以处理来自客户端的不同类型的POST请求&#xff0c;包括POST form、POST URL参数和POST JSON数据。以下是它们的区别以及在微服务Controller中的示例说明&#xff1a; POST Form 表单数据&#xff1a; 当客户端以表单方式提交数据…...

repo 常用命令汇总——202308

文章目录 1. 下载repo&#xff1a;2. 获取工程repo信息3. 下载代码4. 创建并切换本地分支5. repo forall6. repo upload7. repo list8. repo info9. repo help 1. 下载repo&#xff1a; 使用下面命令&#xff0c;具体版本号参考前面网页中显示的最新版本号。 curl http://git…...

[Linux]命令行参数和进程优先级

[Linux]命令行参数和进程优先级 文章目录 [Linux]命令行参数和进程优先级命令行参数命令行参数的概念命令函参数的接收编写代码验证 进程优先级进程优先级的概念PRI and NI使用top指令修改nice值 命令行参数 命令行参数的概念 命令行参数是指用于运行程序时在命令行输入的参数…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...