当前位置: 首页 > 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值 命令行参数 命令行参数的概念 命令行参数是指用于运行程序时在命令行输入的参数…...

Windows 11 零基础搞定 Coze Studio 本地部署:Docker 配置 + 豆包模型实战

Windows 11 零基础搞定 Coze Studio 本地部署&#xff1a;Docker 配置 豆包模型实战 1. 环境准备与Docker安装 对于Windows 11用户来说&#xff0c;Docker是运行Coze Studio的基础环境。与Linux或macOS不同&#xff0c;Windows平台需要特别注意虚拟化支持和镜像源配置。 硬…...

源码编译实战:定制rpath与interpreter实现高版本glibc程序向下兼容部署

1. 为什么需要高版本glibc程序向下兼容 最近在给客户部署AI推理服务时遇到一个典型问题&#xff1a;开发环境用的是Ubuntu 20.04&#xff08;glibc 2.31&#xff09;&#xff0c;而生产环境是CentOS 7&#xff08;glibc 2.17&#xff09;。直接拷贝编译好的程序运行时&#xff…...

TypeScript实战:手把手教你实现4种不依赖第三方库的UUID生成器(附完整代码)

TypeScript实战&#xff1a;4种零依赖UUID生成器的实现与优化 在小程序开发或特殊环境下&#xff0c;我们常常面临无法使用第三方库的困境。UUID作为分布式系统中唯一标识符的核心组件&#xff0c;其生成逻辑却往往被封装在uuid这样的第三方库中。本文将带你从零实现四种不同格…...

PingFangSC字体全栈应用指南:从技术原理到性能优化

PingFangSC字体全栈应用指南&#xff1a;从技术原理到性能优化 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件&#xff0c;包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC 解析字体技术原理&#xff1a;为什么格式选…...

像素幻梦·创意工坊实操手册:实时HUD状态栏信息读取与调试技巧

像素幻梦创意工坊实操手册&#xff1a;实时HUD状态栏信息读取与调试技巧 1. 认识像素幻梦的HUD状态栏 像素幻梦创意工坊的HUD&#xff08;Head-Up Display&#xff09;状态栏位于界面顶部&#xff0c;采用16-bit像素风格设计&#xff0c;为创作者提供实时系统状态反馈。这个看…...

OpenClaw语音控制之语音命令识别系统架构详解

5.1 系统架构总览5.1.1 整体架构OpenClaw 语音命令识别系统是一个基于事件驱动的实时语音处理平台&#xff0c;核心设计目标是实现低延迟、高可靠的语音交互能力。系统采用模块化架构&#xff0c;各组件通过明确定义的接口进行通信&#xff0c;支持多种电话服务提供商&#xff…...

Hasklig 可变字体终极指南:单一文件实现多字重支持的完整教程

Hasklig 可变字体终极指南&#xff1a;单一文件实现多字重支持的完整教程 【免费下载链接】Hasklig Hasklig - a code font with monospaced ligatures 项目地址: https://gitcode.com/gh_mirrors/ha/Hasklig Hasklig 是一款专为程序员设计的开源代码字体&#xff0c;以…...

Qwen2.5-7B LoRA微调入门:十分钟快速指南,轻松上手模型定制

Qwen2.5-7B LoRA微调入门&#xff1a;十分钟快速指南&#xff0c;轻松上手模型定制 1. 前言&#xff1a;为什么选择LoRA微调 在当今大模型技术快速发展的背景下&#xff0c;如何高效地对预训练模型进行定制化调整成为开发者面临的关键挑战。LoRA&#xff08;Low-Rank Adaptat…...

OpenClaw调试技巧:百川2-13B任务失败时的日志分析与修复

OpenClaw调试技巧&#xff1a;百川2-13B任务失败时的日志分析与修复 1. 当自动化任务突然罢工时 上周三凌晨2点&#xff0c;我的OpenClaw突然停止了工作——这个本该在深夜自动整理会议纪要并归档的助手&#xff0c;悄无声息地宕机了。监控屏幕显示它卡在"正在调用百川2…...

【OFDM通信】基于matlab室内NOMA-OFDM-VLC系统仿真【含Matlab源码 15240期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…...