SQLAlchemy ORM高级查询之过滤,排序

order_by,filter的语法。

用久了才会熟悉。

Session = sessionmaker(bind=engine)
session = Session()

print(session.query(Cookie.cookie_name, Cookie.quantity).first())

for cookie in session.query(Cookie).order_by(desc(Cookie.quantity)):
    print('{:3} - {}'.format(cookie.quantity, cookie.cookie_name))

# query = session.query(Cookie).order_by(Cookie.quantity)[:2]
query = session.query(Cookie).order_by(Cookie.quantity).limit(4)
print([result.cookie_name for result in query])

inv_count = session.query(func.sum(Cookie.quantity)).scalar()
print(inv_count)

rec_count = session.query(func.count(Cookie.cookie_name)).first()
print(rec_count)

rec_count = session.query(func.count(Cookie.cookie_name).label('inventory_count')).first()
print(rec_count.keys())
print(rec_count.inventory_count)

record = session.query(Cookie).filter(Cookie.cookie_name == 'chocolate chip').first()
print record

record = session.query(Cookie).filter_by(cookie_name='chocolate chip').first()
print(record)

query = session.query(Cookie).filter(Cookie.cookie_name.like('%chocolate%'))
for record in query:
    print(record.cookie_name)

results = session.query(Cookie.cookie_name, 'SKU-' + Cookie.cookie_sku).all()
for row in results:
    print(row)

query = session.query(Cookie.cookie_name, cast((Cookie.quantity * Cookie.unit_cost),
                                               Numeric(12, 2)).label('inv_cost'))
for result in query:
    print('{} - {}'.format(result.cookie_name, result.inv_cost))

query = session.query(Cookie).filter(
    Cookie.quantity > 23,
    Cookie.unit_cost < 0.40
    )
for result in query:
    print(result.cookie_name)

query = session.query(Cookie).filter(
    or_(
        Cookie.quantity.between(10, 50),
        Cookie.cookie_name.contains('chip')
        )
    )
for result in query:
    print(result.cookie_name)

输出:

('chocolate chip', 12)
100 - oatmeal raisin
 24 - peanut butter
 12 - chocolate chip
 12 - chocolate chip
 12 - chocolate chip
 12 - chocolate chip
  1 - dark chocolate chip
  1 - molasses
  1 - dark chocolate chip
  1 - molasses
['dark chocolate chip', 'molasses', 'dark chocolate chip', 'molasses']
176
(10,)
['inventory_count']
10
Cookie(cookie_name='chocolate chip', cookie_recipe_url='http://www.baidu.com/', cookie_sku='CC01', quantity=12, unit_cost=0.50)
Cookie(cookie_name='chocolate chip', cookie_recipe_url='http://www.baidu.com/', cookie_sku='CC01', quantity=12, unit_cost=0.50)
chocolate chip
chocolate chip
chocolate chip
dark chocolate chip
chocolate chip
dark chocolate chip
('chocolate chip', 'SKU-CC01')
('chocolate chip', 'SKU-CC01')
('chocolate chip', 'SKU-CC01')
('dark chocolate chip', 'SKU-CC02')
('molasses', 'SKU-MOL01')
('chocolate chip', 'SKU-CC01')
('dark chocolate chip', 'SKU-CC02')
('molasses', 'SKU-MOL01')
('peanut butter', 'SKU-PB01')
('oatmeal raisin', 'SKU-EWW01')
chocolate chip - 6.00
chocolate chip - 6.00
chocolate chip - 6.00
dark chocolate chip - 0.75
molasses - 0.80
chocolate chip - 6.00
dark chocolate chip - 0.75
molasses - 0.80
peanut butter - 6.00
oatmeal raisin - 100.00
peanut butter
chocolate chip
chocolate chip
chocolate chip
dark chocolate chip
chocolate chip
dark chocolate chip
peanut butter

 

时间: 2024-11-03 02:00:11

SQLAlchemy ORM高级查询之过滤,排序的相关文章

Oracle基本查询过滤排序示例解析

以下是对Oracle中的基本查询过滤排序示例进行了详细的分析介绍,需要的朋友可以参考下   基本查询: 复制代码 代码如下: --查询所有员工的信息 select * from emp; --设置行宽 set linesize 120; --设置列宽为四个数字的宽度 col empno for 9999; --设置列宽,a表示字符串共八位长度 col ename for a8 --设置pageSize每页显示30条记录 set pagesize 30; --sql中支持算数表达式,注意:如果一个

Python的ORM框架中SQLAlchemy库的查询操作的教程_python

1. 返回列表和标量(Scalar) 前面我们注意到Query对象可以返回可迭代的值(iterator value),然后我们可以通过for in来查询.不过Query对象的all().one()以及first()方法将返回非迭代值(non-iterator value),比如说all()返回的是一个列表: >>> query = session.query(User).\ >>> filter(User.name.like('%ed')).order_by(User.

SQLAlchemy ORM之建表与查询

作了最基本的操作,找找感觉.. #coding=utf-8 from datetime import datetime from sqlalchemy import (MetaData, Table, Column, Integer, Numeric, String, Boolean, DateTime, ForeignKey, create_engine, CheckConstraint) from sqlalchemy import (insert, select, update, dele

sqlalchemy(二)高级用法

本文将介绍sqlalchemy的高级用法. 外键以及relationship 首先创建数据库,在这里一个user对应多个address,因此需要在address上增加user_id这个外键(一对多). #!/usr/bin/env python # encoding: utf-8 from sqlalchemy import create_engine from sqlalchemy import Column from sqlalchemy import Integer from sqlalc

oracle高级查询总结

             oracle与我们常用的sqlserver.mysql相比,有非常多的优势,它可以支持多个实例同时运行,功能非常强大,主要在传统行业的数据化业务中,比如:银行.金融这样的对可用性.健壮性.安全性.实时性要求极高的业务:零售.物流这样对海量数据存储分析要求很高的业务.此外,高新制造业如芯片厂也基本都离不开Oracle:电商也有很多使用者,如京东(正在投奔Oracle).阿里巴巴(计划去Oracle化).而且由于Oracle对复杂计算.统计分析的强大支持,在互联网数据分析.

看实例学VFP:对查询结果进行排序

本例是一个显示包括各记录的自然情况及实发工资的"工资排行榜".本例在表单的init事件中首先使用select语句对"工资表"的奖金.补助等进行计算,并将查询结果输出为一个包含"实发资金"和"员工编号"的名为lsJJ的临时表:然后对"人员信息表"和临时表lsjj进行表连接查询并对查询结果进行排序后输出为临时表lsb,查询结果中包括所需显示的字段及工资(这是经过计算后的实发工资),最后将lsb设为表格控件的数据

LinQ To Objects 高级查询方法

 什么是LinQ To Objects?      用一个例子解释,首先定义一个数组,查询数组中的最大值:   int[] arr = { 123, 2, 3, 45, 654, 2324, 897, 56, 6554, 4, 3, 6, 8, 434 };      旧的方法:    int max=0 ; foreach(int a in arr) { if(a>=max) max=a; } Console.Write("最大值:"+ max);           LinQ

datagridview-C# 对NEW Datatable过滤排序,为何会影响到DataGridView的显示,BUG吗?

问题描述 C# 对NEW Datatable过滤排序,为何会影响到DataGridView的显示,BUG吗? C# 对NEW Datatable过滤排序,为何会影响到DataGridView的显示,BUG吗? 见代码 paras = new SqlParameter[]{ new SqlParameter("@type", "待复核明细"), new SqlParameter("@fhdjbh", PubVar.djbh) }; dt = Pub

Linq——高级查询方法入门

            一,Lambda表达式                          lambda表达式刚开始用的时候还很不习惯,因为以前用惯了那种先foreach,再逐个判断的麻烦形式,刚开始用lambda都会在脑子里转一下,变成自己让自己舒服的格式,但是写过几行代码后,就会喜欢上这种形式,首先,它比较简洁,其次,和LINQ组合起来用感觉非常贴近SQL:           二,LINQ高级查询内容简介