热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Flask的ORM方法

orm对象:非查询集通过db.session实现必须手动提交查询通过db.query实现非查询方法:db.session.add(对象)添加对象db.session.add_all

orm对象:



  • 非查询集通过db.session实现 必须手动提交

  • 查询通过db.query实现


非查询方法:



  • db.session.add(对象) 添加对象

  • db.session.add_all([obj1,obj2,...]) 增加所有

  • db.session.delete(obj) 删除对象

  • db.session.commit( ) 提交回话

  • db.session.rollback() 有异常可以设置回退

  • db.session.remove() 移除会话【释放空间】

def add_students():
stu1 = Students(name='小红')
stu2 = Students(name='小王')
stu3 = Students(name='小张')
stu4 = Students(name='小高')
# db.session.add(stu4)
db.session.add_all([stu1, stu2, stu3,stu4])
db.session.commit()

修改:先查询再修改属性

def update_student():
stu1 = Students.query.first()
stu1.name = '老李'
db.session.commit()

过滤器

(1) all 查询所有 以列表形式返回 不支持连贯操作

类名.query.all()
User.query.all() # 查询User表中的所有数据

(2) filter() 过滤

类名.query.filter([类名.属性名 条件操作符 值])
User.query.filter() #返回所有
User.query.filter(User.age>20) #查询年龄大于20的数据
User.query.filter(User.age>20,User.age<40) #查询年龄大于20的数据 and 小于40

(3) filter_by 只支持参数为关键字参数

类名.query.filter_by(属性名=值...)
data = User.query.filter_by(id=2)
data = User.query.filter_by(id>2) #错误写法 不可以使用模糊查到
data = User.query.filter_by(id=2,age=27)

(4) offset 偏移量

offset(num)
User.query.filter().offset(2)

(5) limit 取值

limit(num)
User.query.filter(User.age>30).limit(2) 查到的结果只取两个

(6) offset和limit组合使用

User.query.offset(2).limit(2) 也是只取两个

(7) order_by() 排序--->默认是升序

data = User.query.order_by(User.age) #升序
data = User.query.order_by(-User.age) #降序

(8) first 取出第一条数据 返回对象

User.query.first() == User.query.get(2)

(9) get 获取id对应的数据

查询成功返回对象 查询失败 返回None
User.query.get(2)

(10) contains 包含关系

User.query.filter(User.username.contains('7')) #username中包含数字7的数据

(11) like 模糊查询

User.query.filter(User.username.like('李%')) #以李作为开头的

(12) startswith endswith 以...开头 以...结尾

User.query.filter(User.username.startswith('李')) # 以姓李的开头
User.query.filter(User.username.endswith('6')) # 以6为结尾的

(13) 比较运算符

__gt__
__ge__
__lt__
__le__
>
<
>=
<=
==
!=

(14) in 和 not in

User.query.filter(User.age.in_([27,12,1,30,40,50]))

(15) is null

User.query.filter(User.username.isnot(None))

(16) and_

多个条件 用逗号隔开,为and操作

from sqlalchemy import and_
User.query.filter(and_(User.age==27,User.id==2))

(17) or_

from sqlalchemy import or_
@main.route('/and/')
def myAnd():
data = User.query.filter(or_(User.age==27,User.id==2))
data = User.query.filter(and_(User.username.like('%6%')),or_(User.age>=27,User.id==2))
return render_template('show.html',data=data)

(18) not_

from sqlalchemy import not_
@main.route('/and/')
def myAnd():
# data = User.query.filter(not_(User.age>27,User.id==1))\
# 错误写法只能给一个条件取反
data = User.query.filter(not_(User.age>27))
return render_template('show.html',data=data)

(19) count 统计

data = User.query.filter(not_(User.age>27)).count()


推荐阅读
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
author-avatar
倾听雨2502862143
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有