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

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

条件过滤操作

#equal
query.filter(User.name == 'ed') #not equal
query.filter(User.name != 'ed') #LIKE
query.filter(User.name.like('%ed%')) #ILIKE (case-insensitive LIKE)
query.filter(User.name.ilike('%ed%'))
#For guaranteed case-insensitive comparisons, use ColumnOperators.ilike(). #IN
query.filter(User.name.in_(['ed', 'wendy', 'jack'])) query.filter(User.name.in_(
session.query(User.name).filter(User.name.like('%ed%'))
)) #NOT IN
query.filter(~User.name.in_(['ed', 'wendy', 'jack'])) #IS NULL
query.filter(User.name == None)
or
query.filter(User.name.is_(None)) #IS NOT NULL
query.filter(User.name != None)
or
query.filter(User.name.isnot(None)) #AND
from sqlalchemy import and_ query.filter(and_(User.name == 'ed', User.fullname == 'Ed Jones'))
or
query.filter(User.name == 'ed', User.fullname == 'Ed Jones')
or
query.filter(User.name == 'ed').filter(User.fullname == 'Ed Jones') #OR
from sqlalchemy import or_ query.filter(or_(User.name == 'ed', User.name == 'wendy')) #MATCH
query.filter(User.name.match('wendy'))
#返回数组all()
>>> query = session.query(User).filter(User.name.like('%ed')).order_by(User.id)
>>> query.all()
[<User(name='ed', fullname='Ed Jones', password='f8s7ccs')>,
<User(name='fred', fullname='Fred Flinstone', password='blah')>] #返回scalar标量first()
>>> query.first()
<User(name='ed', fullname='Ed Jones', password='f8s7ccs')>

去重与降序

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

bulk insert & update & delete

# https://qiita.com/yukiB/items/d6a70da802cb5731dc01
http://docs.sqlalchemy.org/en/latest/orm/persistence_techniques.html?highlight=bulk%20operations db.session.add_all() Items.query.filter(Items.status=='1').update({'Items.stauts': '0'}) 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. 【Cracking the Code Interview(5th edition)】一、数组与字符串(C++)

    1.1 实现一个算法,确定一个字符串的所有字符是否全都不同.不允许使用额外的数据结构. 解答:这里假定字符集为ASCII码,可以与面试官沟通确认字符串使用的字符集.由于字符集是有限的,建立一个数组模拟 ...

  2. freemarker 遍历树形菜单

    <ul class="nav sidebar-menu"> <!--Dashboard--> <!-- 定义遍历方法 --> <#macr ...

  3. maven 过滤webapp下的文件

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-p ...

  4. 在基于AngularJs架构的ABP项目中使用UEditor

    [前提须知] 读过此篇博客 了解angular-ueditor 了解ABP如何使用 会使用VS2017 [1.下载ABP模板] https://aspnetboilerplate.com/Templa ...

  5. 隐藏win10中“此电脑”里的6个子文件夹

    删除点击此电脑后6个子文件夹 运行regedit: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Fold ...

  6. SecureCRT 遇到一个致命的错误且必须关闭

    1.将报错路径中VanDyke文件夹内的东西删除掉2.运行regedit,在注册表中将HKEY_LOCAL_MACHINA中SOFTWARE里的VanDyke删除3.注册表中打开HKEY_CURREN ...

  7. 工作必备,五分钟如何搞定Excel甘特图

    工作必备,五分钟如何搞定Excel甘特图  https://www.sohu.com/a/212628821_641930 EXCEL中如何给图表添加标题 1.选中图表 >> [布局] 菜 ...

  8. ORACLE CBC LATCH 检查

    ###############1.DB meet latch: cache buffers chains event from awr report ,check latch: cache buffe ...

  9. Linux下安装&运行Jmeter程序

    Jmeter在linux系统中运行需要安装jdk和Jmeter两个软件: 1.安装JDK 先检查系统是否有安装jdk,在linux中执行如下命令:java -version  如果返回版本信息,说明系 ...

  10. g++ -I(大写i) 与-L(大写l)-l(小写l) 的作用与学习

    linux 下 g++编译程序时,-I(大写i) 与-L(大写l)-l(小写l) 的作用 作为一个linux入门级使用者,gcc/g++ 的简单操作已经用过多次, 但是有时稍微复杂一点的程序就会使用到 ...