1. 程式人生 > >Python3-sqlalchemy-orm 分組統計

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:
[email protected]
/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() #現在才統一提交,創新資料