【Flask】Sqlalchemy group_by having
2024-08-23 01:31:52
### group_by:
根据某个字段进行分组。比如想要根据性别进行分组,来统计每个分组分别有多少人
### having:
having是对查找结果进一步过滤。比如只想要看未成年人的数量,那么可以首先对年龄进行分组统计人数,然后再对分组进行having过滤。示例代码如下:
# coding:utf-8
# Author: liangjun.chen from datetime import datetime
from sqlalchemy import create_engine, Column, Integer, String, Enum, func from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, relationship, backref HOSTNAME = '127.0.0.1'
PORT = 3306
DATABASE = 'sqlalchemy_first'
USERNAME = 'root'
PASSWORD = '' DB_URI = 'mysql+pymysql://{username}:{password}@{host}:{port}/{dbname}?charset=utf8'.format(
username=USERNAME, password=PASSWORD, host=HOSTNAME, port=PORT, dbname=DATABASE
)
engine = create_engine(DB_URI)
Base = declarative_base(engine)
Session = sessionmaker(engine)
session = Session() class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True, autoincrement=True)
username = Column(String(50), nullable=False)
age = Column(Integer, default=0)
gender = Column(Enum('male', 'female', "secret"), default='male') def __repr__(self):
return "User<{}>".format(self.username)
# Base.metadata.drop_all()
# Base.metadata.create_all()
#
# user = User(username='saber', age=17, gender='male')
# user2 = User(username='saber2', age=18, gender='male')
# user3 = User(username='saber3', age=18, gender='female')
# user4 = User(username='saber4', age=19, gender='female')
# user5 = User(username='saber5', age=19, gender='female')
#
# session.add_all([user, user2, user3, user4, user5])
# session.commit() # group_by users = session.query(User.age, func.count(User.id)).group_by(User.age)
print users.all() # having
users = session.query(User.age, func.count(User.id)).group_by(User.age).having(User.age>18).all()
print users
最新文章
- cluster,network
- C++下字符串转换
- markdown 基础语法
- fedora 19 gnome 3.8 关闭笔记本盖子的动作
- 2015年第六届蓝桥杯javaB组 试题 答案 解析
- sql server 性能调优之 资源等待PAGEIOLATCH
- Java 简单的登录验证码
- python数据分析及展示(二)
- JDK常用命令(三)jmap
- 【原创】重装Windows系统后Android studio无需重装,直接迁移
- javascript 表格排序和表头浮动效果(扩展SortTable)
- Linux下使用cron让Python程序持久化运行
- Vmware ESXi添加共享磁盘
- pyDay6
- C#调用系统蜂鸣(需要发出警告时挺好用的 即使没有声卡)
- CF17E Palisection manacher
- Eclipse如何定位到某一个类所在硬盘上的位置
- Jquery重新学习之一[加载与属性html(),text(),val()]
- HDU5957 Query on a graph(拓扑找环,BFS序,线段树更新,分类讨论)
- 【bfs+优先队列】POJ2049-Finding Nemo
热门文章
- plsql programming 09 数字
- Easyui Form增加myLoad方法,使其支持二级数据对象
- 第一百九十二节,jQuery EasyUI 使用
- POJ 1426 Find The Multiple &;amp;&;amp; 51nod 1109 01组成的N的倍数 (BFS + 同余模定理)
- android自定义View_2——Making the View Interactive
- OpenCV学习笔记十九:opencv_gpu*模块
- Android OpenCV集成摄像头图片动态识别车牌号
- TP分页
- ASP-Command-SQL格式
- camke GUI工具 选择 vs2017 时,如何指定工具集 v140 而不是默认的 v141?