django是有orm操作的  可想而知 那么flask也是有orm操作的,其实flask的orm操作的使用和djnago的是差不多的

django的orm操作进行条件筛选的时候后面跟着的是objects

django
  表名.objects.语句
flask的是query
  表名.objects.语句 eg:
  django:
    User.objects.filter(条件).first
  flask:
    User.query.filter_by(条件).first

常用查询语句:

  

all()     查询所有

filter_by / filter  单个查询
filter_by 不需要指定是哪个类的哪个属性,只需要制定属性及其目标值就可以了, 并且只能写具体的值不能写模糊值
filter filter中指定查询条件的时候需要指定类名的前缀。可以指定模糊值 order_by 排序

查询集

  1. 原始查询集

    类名.query得到的结果就为原始查询集

  2. 数据查询集

    加上各种的过滤器的方法 最终返回的结果 为数据查询集 都使用数据查询集

过滤器

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

类名.query.all()

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

(2) filter() 过滤

类名.query.filter([类名.属性名 条件操作符 值])

 User.query.filter() #返回所有

 User.query.filter(User.age>) #查询年龄大于20的数据

 User.query.filter(User.age>,User.age<) #查询年龄大于20的数据 and 小于40

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

类名.query.filter_by(属性名=值...)

 data = User.query.filter_by(id=)

 data = User.query.filter_by(id>) #错误写法 不可以使用模糊查到

 data = User.query.filter_by(id=,age=)

(4) offset 偏移量

offset(num)

User.query.filter().offset()

(5) limit 取值

limit(num)

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

(6) offset和limit组合使用

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

(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()

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

查询成功返回对象 查询失败 返回None

User.query.get()

(10) contains 包含关系

User.query.filter(User.username.contains(''))    #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为结尾的

(13) 比较运算符

  1. __gt__
  2. __ge__
  3. __lt__
  4. __le__
  5. >
  6. <
  7. >=
  8. <=
  9. ==
  10. !=

.

(14) in 和 not in

User.query.filter(User.age.in_([,,,,,]))

(15) is null

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

(16) and_

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

from sqlalchemy import and_

 User.query.filter(and_(User.age==,User.id==))

(17) or_

from sqlalchemy import or_

@main.route('/and/')
def myAnd():
data = User.query.filter(or_(User.age==,User.id==))
data = User.query.filter(and_(User.username.like('%6%')),or_(User.age>=,User.id==))
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>,User.id==))\
#错误写法只能给一个条件取反
data = User.query.filter(not_(User.age>))
return render_template('show.html',data=data)

(19) count 统计

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

四、文件的迁移

模块:

pip install flask-migrate

pip install flask-script

使用

(1) 实例化

from flask_migrate import Migrate,MigrateCommand
from flask_sqlalchemy import SQLalchemy
app = Flask(__name__)
db = SQLalchemy(app)
migrate = Migrate(app,db=db)
manager = Manager(app)
manager.add_command('db',MigrateCommand)

(2) 初始化 迁移文件目录

python manage.py db init

(3) 生成迁移文件

python manage.py db migrate

(4) 执行迁移文件

python manage.py db upgrade

注意

如果当前存在 模型 但是执行创建迁移文件的时候 提示没有任何改变的时候 需要查看当前的模型类是否有使用(导入)

flask的orm操作的更多相关文章

  1. flask 中orm关系映射 sqlalchemy的查询

    flask的orm框架(SQLAlchemy)-一对多查询以及多对多查询   一对多,多对多是什么? 一对多.例如,班级与学生,一个班级对应多个学生,或者多个学生对应一个班级. 多对多.例如,学生与课 ...

  2. flask的orm框架(SQLAlchemy)-一对多查询以及多对多查询

    一对多,多对多是什么? 一对多.例如,班级与学生,一个班级对应多个学生,或者多个学生对应一个班级. 多对多.例如,学生与课程,可以有多个学生修同一门课,同时,一门课也有很多学生. 一对多查询 如果一个 ...

  3. Python/Django(CBV/FBV/ORM操作)

    Python/Django(CBV/FBV/ORM操作) CBV:url对应的类(模式) ##====================================CBV操作============ ...

  4. python/ORM操作详解

    一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...

  5. Django中ORM操作

    ORM操作: class UserInfo(models.Model): username = models.CharField(max_length=32) password = models.Ch ...

  6. Django的ORM操作

    ORM操作 select * from tb where id > 1 # 对应关系 models.tb.objects.filter(id__gt=1) models.tb.objects.f ...

  7. python 外键用法 多对多关系 ORM操作 模板相关

    一.app/models中写类(设计表结构) 1.普通类 class  A(models.Model): id=modles.AutoField(primary_key=True) name=mode ...

  8. Django之ORM操作

    Django之ORM操作 前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计 ...

  9. Django之ORM操作(聚合 分组、F Q)

    Django之ORM操作(聚合 分组.F Q) 聚合 aggregate()是QuerySet的一个终止子句,也就是说,他返回一个包含一些键值对的字典,在它的后面不可以再进行点(.)操作.   键的名 ...

随机推荐

  1. dynamic解析Http xml格式响应数据

    继续上一篇 构建RESTful风格的WCF服务 ,咱已经把服务端的数据和服务准备好了,客户端调用 wcf rest接口后如何解析xml?下面使用dynamic关键字解析来至于WCF REST XML响 ...

  2. C#中的Dictionary类,默认key是区分大小写的

    在C#中定义一个Dictionary Dictionary<string,string> dictionary = new Dictionary<string,string>( ...

  3. Java 集合框架(一)—— 接口综述

    前言:凡是使用 Java 编程的,几乎肯定会用到集合框架,比如 ArrayList.LinkedList.HashSet.HashMap 等,集合框架的代码绝对是大师级的实现,所以为了更好地使用集合框 ...

  4. Nginx设置静态页面压缩和缓存过期时间的方法

    使用nginx服务器的朋友可能都知道需要设置html静态页面缓存与页面压缩与过期时间的设置了,下面我来给各位同学介绍一下配置方法,包括对ico,gif,bmp,jpg,jpeg,swf,js,css, ...

  5. SQLite菜鸟教程

    学习链接:http://www.runoob.com/sqlite/sqlite-trigger.html

  6. JavaScript 带参数函数定义

    函数的参数parameters在函数中充当占位符(也叫形参)的作用,参数可以为一个或多个.调用一个函数时所传入的参数为实参,实参决定着形参真正的值. 这是带有两个参数的函数, param1 和 par ...

  7. 二:Jquery-action

    一:dom对象和jq对象 1.对象含义: dom对象:js方法获取元素,将dom对象存储在变量中 jq对象:jq方法获取元素的jq对象,将jq对象存储在变量中 相互之间不能使用另外一个对象的任何属性和 ...

  8. Centos系统下卸载、安装MySQL及用户的创建、授权和使用(详细。。。。)

    由于经常使用linux系统,并且大数据环境搭建中经常会使用到mysql,不像windows系统下的安装,今天有点空写一篇,下面我给大家演示一遍. 主要有三部分内容: 1.MySQL的卸载 2.MySQ ...

  9. 【原】Docker入门之Centos7.0+安装

    服务器配置:1核2G 40G 硬盘,Centos 7.4. 以下全程是在 root 用户下操作: 1.卸载旧版本 yum remove docker \ docker-client \ docker- ...

  10. Storm框架:如何根据业务条件选择不同的bolt进行下发消息

    Strom框架基本概念就不提了,这里主要讲的是Stream自定义ID的消息流.默认spout.bolt都需实现接口方法declareOutputFields,代码如下: @Override publi ...