https://docs.sqlalchemy.org/en/latest/orm/tutorial.html

http://docs.sqlalchemy.org/en/latest/core/sqlelement.html

条件过滤操作

  1. #equal
  2. query.filter(User.name == 'ed')
  3. #not equal
  4. query.filter(User.name != 'ed')
  5. #LIKE
  6. query.filter(User.name.like('%ed%'))
  7. #ILIKE (case-insensitive LIKE)
  8. query.filter(User.name.ilike('%ed%'))
  9. #For guaranteed case-insensitive comparisons, use ColumnOperators.ilike().
  10. #IN
  11. query.filter(User.name.in_(['ed', 'wendy', 'jack']))
  12. query.filter(User.name.in_(
  13. session.query(User.name).filter(User.name.like('%ed%'))
  14. ))
  15. #NOT IN
  16. query.filter(~User.name.in_(['ed', 'wendy', 'jack']))
  17. #IS NULL
  18. query.filter(User.name == None)
  19. or
  20. query.filter(User.name.is_(None))
  21. #IS NOT NULL
  22. query.filter(User.name != None)
  23. or
  24. query.filter(User.name.isnot(None))
  25. #AND
  26. from sqlalchemy import and_
  27. query.filter(and_(User.name == 'ed', User.fullname == 'Ed Jones'))
  28. or
  29. query.filter(User.name == 'ed', User.fullname == 'Ed Jones')
  30. or
  31. query.filter(User.name == 'ed').filter(User.fullname == 'Ed Jones')
  32. #OR
  33. from sqlalchemy import or_
  34. query.filter(or_(User.name == 'ed', User.name == 'wendy'))
  35. #MATCH
  36. query.filter(User.name.match('wendy'))
  1. #返回数组all()
  2. >>> query = session.query(User).filter(User.name.like('%ed')).order_by(User.id)
  3. >>> query.all()
  4. [<User(name='ed', fullname='Ed Jones', password='f8s7ccs')>,
  5. <User(name='fred', fullname='Fred Flinstone', password='blah')>]
  6. #返回scalar标量first()
  7. >>> query.first()
  8. <User(name='ed', fullname='Ed Jones', password='f8s7ccs')>

去重与降序

  1. live_channels = Live_channel.query \
  2. .distinct(Live_channel.name) \
  3. .with_entities(Live_channel.name, Live_channel.cname) \
  4. .order_by(Live_channel.name.desc()) \
  5. .all()
  6. # distinct() 过滤某一字段
  7. # 字段默认是asc(升序)排列,后面加入desc()为降序排列
  8. #生成的sql
  9. SELECT DISTINCT live_channel.name AS live_channel_name, live_channel.cname AS live_channel_cname
  10. FROM live_channel ORDER BY live_channel.name DESC

bulk insert & update & delete

  1. # https://qiita.com/yukiB/items/d6a70da802cb5731dc01
  2. http://docs.sqlalchemy.org/en/latest/orm/persistence_techniques.html?highlight=bulk%20operations
  3. db.session.add_all()
  4. Items.query.filter(Items.status=='1').update({'Items.stauts': '0'})
  5. Items.query.filter(Items.status=='0').delete()

sqlalchemy使用tip的更多相关文章

  1. day95:flask:SQLAlchemy数据库查询进阶&关联查询

    目录 1.数据库查询-进阶 1.常用的SQLAlchemy查询过滤器 2.常用的SQLAlchemy查询结果的方法 3.filter 4.order_by 5.count 6.limit&of ...

  2. sqlalchemy学习

    sqlalchemy官网API参考 原文作为一个Pythoner,不会SQLAlchemy都不好意思跟同行打招呼! #作者:笑虎 #链接:https://zhuanlan.zhihu.com/p/23 ...

  3. tornado+sqlalchemy+celery,数据库连接消耗在哪里

    随着公司业务的发展,网站的日活数也逐渐增多,以前只需要考虑将所需要的功能实现就行了,当日活越来越大的时候,就需要考虑对服务器的资源使用消耗情况有一个清楚的认知.     最近老是发现数据库的连接数如果 ...

  4. 冰冻三尺非一日之寒-mysql(orm/sqlalchemy)

    第十二章  mysql ORM介绍    2.sqlalchemy基本使用 ORM介绍: orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似pyt ...

  5. Python 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  6. SQLAlchemy(一)

    说明 SQLAlchemy只是一个翻译的过程,我们通过类来操作数据库,他会将我们的对应数据转换成SQL语句. 运用ORM创建表 #!/usr/bin/env python #! -*- coding: ...

  7. 项目经理排期的几个tip

    互联网敏捷开发的流程可以演绎出很多玩法,但最好都遵循以下几个tip: 1, 对项目经理最重要的一条是,通读所有需求文档,跟相关PM进行彻底沟通,把需求都搞熟搞透,防止漏排任务: 2, Stroy拆分要 ...

  8. sqlalchemy(二)高级用法

    sqlalchemy(二)高级用法 本文将介绍sqlalchemy的高级用法. 外键以及relationship 首先创建数据库,在这里一个user对应多个address,因此需要在address上增 ...

  9. sqlalchemy(一)基本操作

    sqlalchemy(一)基本操作 sqlalchemy采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型. 安装 需要安装MySQLdb pip install ...

随机推荐

  1. 查看详细linux系统信息的命令和方法

    查看内存大小: cat /proc/meminfo |grep MemTotaluname -a # 查看内核/操作系统/CPU信息的linux系统信息命令head -n 1 /etc/issue # ...

  2. 洛谷 P1801 黑匣子_NOI导刊2010提高(06)

    题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个Black Box要处理一串命令. 命令只有两种: ...

  3. [转载]pytorch自定义数据集

    为什么要定义Datasets: PyTorch提供了一个工具函数torch.utils.data.DataLoader.通过这个类,我们在准备mini-batch的时候可以多线程并行处理,这样可以加快 ...

  4. 【STL基础】vector

    vector 构造函数: //default: vector<T> v; //空的vector //fill: vector<T> v(n); //n个元素的vector,元素 ...

  5. Hanlp(汉语言处理包)配置、使用、官方文档

    配置使用教程:https://github.com/hankcs/HanLP Hanlp官方文档:http://www.hankcs.com/nlp/hanlp.html 参考API:http://h ...

  6. JS匿名函数以及arguments.callee的调用

    var res = (function (n) {    if( n>1 ) {        return n + arguments.callee( n-1 );    } else {   ...

  7. spring boot 系统启动时运行代码(1)-@PostConstruct

    Application.java import org.springframework.boot.SpringApplication; import org.springframework.boot. ...

  8. linux 6 查看防火墙状态及开启关闭命令

    linux 6 查看防火墙状态及开启关闭命令 https://blog.csdn.net/lv_shijun/article/details/52453882 存在以下两种方式: 一.service方 ...

  9. OS---外存分配方式

    1.概述 1.1 在为文件分配外存空间时,所考虑的主要问题:如何有效利用外存空间?如何提高对文件的访问速度? 1.2 常用的外存分配方法:连续分配.链接分配.索引分配(在一个系统中,仅采用一种分配方式 ...

  10. 性能测试工具Jmeter03-功能概要

    Jmeter工具组成部分 资源生成器:用于生成测试过程中服务器.负载机的资源代码.(LR中的VuGen) 用户运行器:通常是一个脚本运行引擎,根据脚本要求模拟指定的用户行为.(LR中的Controll ...