Flask

通过 flask-migrate 发号施令给flask-sqlalchemy 来 影响映射

pythonflask-sqlalchemyMYSQL
CLASS类通过flask-sqlalchemy映射
db.Column() 来映射表中的列
class类对象通过flask-sqlalchemy映射表中的一条记录
db.Integer 两边不同语言的代码相同的作用int
db.String(15)varchar(15)
db.Datetimedatetime

                 

class User(db.Model):                   ------------>    映射的就是一张  user的表

注意事项:

1  要在app.py 中导入xxxmodel.py

2 flask db init  - - - - -》 会产生一个migrations版本文件夹

 flask db migrate  -------->          在migrations文件夹的version里面产生一个版本py文件

falsk db upgrade - -- ->  利用版本py文件和映射关系 在数据库里创建表

数据库查询

python 后端 操作数据库            和       数据库本身操作代码对比:

users= User.query.all()   # select * from user;user = User.query.filter_by(username=username) # select * from user where username='xxx';
id

username       

password

phone

1zhangsan11123
2zhangsan22233
3lisi33344

上述列表 经过   user_list =  User.query.filter_by(username=zhangsan) 代码后

得到的仍然是一个列表

id

username       

password

phone

1zhangsan11123
2zhangsan22233

小结:  

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

有条件查询:  模型类.query.filter_by(字段名 = 值)    ~   select * from user where 字段=值;

MYSQL根据条件查找:

select * from user where age>17 and gender='男';

select * from user where username like 'zhang%';

select * from user where rdatetime> xxx and rdatetime < xxx;

user = User.query.get(2)   #根据主键查询用户,返回值是对象

PYTHON根据条件查找

.filter_by()内部是 字段=值得模式 

.filter()  是==的布尔模式   .filter(模型名.字段名>18)

user_list =  User.query.filter(User.username == 'zhangsan') #返回的是一串对应关系的语句

例如: SELECT user.id AS user_id, user.username AS user_username, user.password AS user_password, user.phone AS user_phone, user.isdelete AS user_isdelete, user.rdatetime AS

user_rdatetime. FROM  user Where user.username = %(username_1)s

user =  User.query.filter(User.username == 'zhangsan').first()  # 返回的是第一个对象

zhangsan

user =  User.query.filter(User.username == 'zhangsan').all()  # 返回的是所有符合条件的列表[<User 3>]

user_list = User.query.filter(User.username.startswith('z')).all()

# select * from user where  username like 'z%';

{{ users | length }}     # 3{{ users }}    #  [<User 1>,<User 4>,<User 5>]
筛选
not_  and_ or_  __lt__ __gt__ > < !=  .filter() .contains() .endswith() .startswith() .like(%) 
user_list = User.query.filter(User.username.endswith(z)).all()# select * from user where username like '%z';user_list = User.query.filter(User.username.contains('z')).all()# select * from user where username like '%z%';user_list = User.query.filter(User.username.like('%沐浴露%')).all  #select * from user where username like '%沐浴露%';#like 使用 一定要加% 才可以
user_list = User.query.filter(User.username.ilike('沐浴露')).all  #ilike 忽略大小写  #  多条件查询    or_  and  
user_list = User.query.filter(or_(User.username.endswith(z),User.username.contains('i'))).all()# or_       ...., 逗号 后面是另一个条件
# select * from user where username like 'z%' or username like '%i%';user_list = User.query.filter(and_(User.username.contains('i'),User.rdatetime < '2025-05-25 10:20:50')).all()
# select * from user where rdatetime <'2025-05-25 10:20:50';
# select * from user where username like '%i%' and rdatetime <'2025-05-25 10:20:50';user_list = User.query.filter(and_(User.username.contains('i'),User.rdatetime.__lt__('2025-05-25 10:20:50') )).all()
# .__lt__()   和  <  一个效果 都是 小于的意思 #补充: __gt__ 大于    __lt__ 小于   __ge__  大于等于   __le__ 小于等于    ---》通常应用在某个范围(整型、日期) 也可以使用>  < >= <=  !=  
from sqlalchermy import and_, or_ not_user_list = User.query.filter(not_(User.username.containes('i'))).all()#从 18 19 20 17 21 22 ....选择
#select * from user where age in [17,18, 20];User.age.between(15, 30)user_list = User.query.filter(User.phone.in_(['13844940855','13844940844'])).all()
#找出这俩号的人儿
.order_by 排序

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

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

user_list = User.query.order_by(-User.id).all()    # 倒序排序

如果想倒序排序 .order_by(-模型类.字段)

limit 限制  和 offset
user = User.query.order_by('id').limit(2)  #报错{{user | length}}  #报错TypeError: object of type 'BaseQuery' has no len()
# 返回的不是列表

比如说 表中 有  1 2 3 4  四个对象
user_list = User.query.order_by('id').limit(2).all() # 返回的是列表  [<user 1>,< user 2>] 默认获取前两个

user_list = User.query.offset(2).limit(2).all()   #返回的是列表  [<user 3>,< user 4>]  跳过2条再获取2条

#offset 是一个偏移   即 偏移两个 再拿2个

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle: 事务,视图

事务 事务是数据库的最小逻辑单元&#xff0c;就是数据库中的一个最小的操作单位。 事务是由多条SQL语句组成的一个集合&#xff0c;有事务统一控制这些SQL语句的执行。 事务的属性 被简称为ACID属性, 是4个属性单词的首字母 脏读,幻读,不可重复读 是三种常见的并发问题&…

Unity3D引擎首次用于光伏仿真设计软件爆火

在光伏设计领域&#xff0c;绿虫光伏仿真设计软件宛如一匹黑马&#xff0c;凭借其基于 Unity3D 引擎的强大功能&#xff0c;为行业带来了全新的解决方案。借助 Unity3D 引擎技术&#xff0c;实现了游戏级高清画面&#xff0c;2D/3D 自由转换&#xff0c;让场景代入感极强&#…

寒假2.6--SQL注入之布尔盲注

知识点 原理&#xff1a;通过发送不同的SQL查询来观察应用程序的响应&#xff0c;进而判断查询的真假&#xff0c;并逐步推断出有用的信息 适用情况&#xff1a;一个界面存在注入&#xff0c;但是没有显示位&#xff0c;没有SQL语句执行错误信息&#xff0c;通常用于在无法直接…

有用的sql链接

『SQL』常考面试题&#xff08;2——窗口函数&#xff09;_sql的窗口函数面试题-CSDN博客 史上最强sql计算用户次日留存率详解&#xff08;通用版&#xff09;及相关常用函数 -2020.06.10 - 知乎 (zhihu.com) 1280. 学生们参加各科测试的次数 - 力扣&#xff08;LeetCode&…

排序算法--基数排序

核心思想是按位排序&#xff08;低位到高位&#xff09;。适用于定长的整数或字符串&#xff0c;如例如&#xff1a;手机号、身份证号排序。按数据的每一位从低位到高位&#xff08;或相反&#xff09;依次排序&#xff0c;每次排序使用稳定的算法&#xff08;如计数排序&#…

将Deepseek接入pycharm 进行AI编程

目录 专栏导读1、进入Deepseek开放平台创建 API key 2、调用 API代码 3、成功4、补充说明多轮对话 总结 专栏导读 &#x1f338; 欢迎来到Python办公自动化专栏—Python处理办公问题&#xff0c;解放您的双手 &#x1f3f3;️‍&#x1f308; 博客主页&#xff1a;请点击——…

14:00面试,14:06就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到2月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

DeepSeek:知识图谱与大模型参数化知识融合的创新架构

引言&#xff1a;AI 领域的融合趋势 在目前大模型与知识图谱作为两个重要的研究方向&#xff0c;各自展现出了强大的能力与潜力。大模型&#xff0c;凭借其在海量数据上的深度训练&#xff0c;拥有强大的语言理解与生成能力&#xff0c;能够处理多种自然语言处理任务&#xff0…

69.弹窗显示复杂的数据框图 C#例子 WPF例子

这是一个复杂的功能实现&#xff0c;其中日志管理器的一个实例包含需要被绑定的数据源。由于主窗口被复杂的内容填满&#xff0c;因此需要设计一个弹窗来专门显示数据框图。以下是实现步骤&#xff1a; 设计主页面&#xff1a; 在主页面上添加一个按钮和一个数据框图&#xf…

分布式微服务系统架构第91集:系统性能指标总结

加群联系作者vx&#xff1a;xiaoda0423 仓库地址&#xff1a;https://webvueblog.github.io/JavaPlusDoc/ 系统性能指标总结 系统性能指标包括哪些&#xff1f; 业务指标、资源指标、中间件指标、数据库指标、前端指标、稳定性指标、批量处理指标、可扩展性指标、可靠性指标。 …

Pygame介绍与游戏开发

提供pygame功能介绍的文档&#xff1a;Pygame Front Page — pygame v2.6.0 documentation 基础语法和实现逻辑 与CLI不同&#xff0c;pygame提供了图形化使用界面GUI&#xff08;graphical user interface&#xff09;基于图像的界面可以创建一个有图像和颜色的窗口 要让py…

网络安全威胁框架与入侵分析模型概述

引言 “网络安全攻防的本质是人与人之间的对抗&#xff0c;每一次入侵背后都有一个实体&#xff08;个人或组织&#xff09;”。这一经典观点概括了网络攻防的深层本质。无论是APT&#xff08;高级持续性威胁&#xff09;攻击、零日漏洞利用&#xff0c;还是简单的钓鱼攻击&am…

FPGA|生成jic文件固化程序到flash

1、单击file-》convert programming files 2、flie type中选中jic文件&#xff0c;configuration decive里根据自己的硬件选择&#xff0c;单击flash loader选择右边的add device选项 3、选择自己的硬件&#xff0c;单击ok 4、选中sof选项&#xff0c;单机右侧的add file 5、选…

P3654 First Step (ファーストステップ)(贪心算法)

#include<bits/stdc.h> using namespace std;int main() {int r,c,k;cin>>r>>c>>k;char a[105][105];int ans0;for(int i0;i<r;i){for(int j0;j<c;j){cin>>a[i][j];}}for(int i0;i<r;i){int cnt0; // 用来记录连续空地的数量for(int j…

Java/Kotlin双语革命性ORM框架Jimmer(一)——介绍与简单使用

概览 Jimmer是一个Java/Kotlin双语框架 包含一个革命性的ORM 以此ORM为基础打造了一套综合性方案解决方案&#xff0c;包括 DTO语言 更全面更强大的缓存机制&#xff0c;以及高度自动化的缓存一致性 更强大客户端文档和代码生成能力&#xff0c;包括Jimmer独创的远程异常 …

ASP.NET Core中Filter与Middleware的区别

中间件是ASP.NET Core这个基础提供的功能&#xff0c;而Filter是ASP.NET Core MVC中提供的功能。ASP.NET Core MVC是由MVC中间件提供的框架&#xff0c;而Filter属于MVC中间件提供的功能。 区别 中间件可以处理所有的请求&#xff0c;而Filter只能处理对控制器的请求&#x…

ASP.NET Core对JWT的封装

目录 JWT封装 [Authorize]的注意事项 JWT封装 NuGet 库 |Microsoft.AspNetCore.Authentication.JwtBearer 9.0.1https://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.JwtBearerhttps://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.JwtBea…

【Uniapp-Vue3】从uniCloud中获取数据

需要先获取数据库对象&#xff1a; let db uniCloud.database(); 获取数据库中数据的方法&#xff1a; db.collection("数据表名称").get(); 所以就可以得到下面的这个模板&#xff1a; let 函数名 async () > { let res await db.collection("数据表名称…

腾讯云TI平台×DeepSeek:开启AI超强体验,解锁部署秘籍

引言 在人工智能飞速发展的今天&#xff0c;AI技术的应用场景已经渗透到我们生活的方方面面。从智能客服到自动驾驶&#xff0c;从精准医疗到金融科技&#xff0c;AI的应用正在不断推动各行业的变革与创新。作为AI领域的领军企业&#xff0c;腾讯云一直以来都在致力于为开发者…

利用 IMU 估计人体关节轴向和位置 —— 论文推导

Title: 利用 IMU 估计人体关节轴向和位置 —— “Joint axis and position estimation from inertial measurement data by exploiting kinematic constraints” —— 论文推导 文章目录 I. 论文回顾II. 铰接关节的约束1. 铰接关节约束的原理2. 铰接关节约束的梯度3. 铰接关节约…