Python3-sqlalchemy-orm 分组统计
#-*-coding:utf-8-*- #__author__ = "logan.xu" import sqlalchemy from sqlalchemy import create_engine,funcfrom sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,String from sqlalchemy.orm import sessionmaker engine=create_engine("mysql+pymysql://root:12345678@localhost/news",encoding='utf-8',echo=True) Base=declarative_base() class User(Base): __tablename__='user' id=Column(Integer,primary_key=True) name=Column(String(32)) password=Column(String(64)) def __repr__(self): return "<%s name:%s>" %(self.id,self.name) Base.metadata.create_all(engine) #创建表结构 Session_class=sessionmaker(bind=engine) #创建与数据库的会话session class,注意,这里返回给session的是这个class,不是实例 Session=Session_class() #生成session实例 #查询 #data=Session.query(User).filter(User.id>2).all() #filter可以写大于,filter_by不可用写大于 #data=Session.query(User).filter(User.id>1).filter(User.id<3).all() #列取多个条件查询 #data=Session.query(User).filter_by(id=2).all() #data=Session.query(User).filter(User.id==2).all() #data=Session.query(User).filter_by().first() #列出一个 #print(data) #修改 #data=Session.query(User).filter(User.id>1).filter(User.id<4).first() #print(data) #data.name="Jack Liu" #data.passwod="Shit happens" #回滚 #fake_user=User(name='Rain',password='12345') #Session.add(fake_user) #print(Session.query(User).filter(User.name.in_(['Jack','rain'])).all()) # #Session.rollback() #此时你rollback一下 #print("after rollback") # #print(Session.query(User).filter(User.name.in_(['Jack','rain'])).all()) #Session.commit() #现在才统一提交,创新数据 #分组统计 fake_user=User(name='Rain',password='12345') Session.add(fake_user) print(Session.query(User.name,func.count(User.name)).group_by(User.name).all()) Session.commit() #现在才统一提交,创新数据