• 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() #现在才统一提交,创新数据

  • 相关阅读:
    Oracle EXTRACT()函数与to_char() 函数
    Java内部类
    SQL 之 Group By
    Android LayoutInflater布局填充器
    JS 图片转Base64
    C# 事件与委托的区别
    AngularJS的循环输出
    jquery实现button倒计时
    重新理解B/S和C/S的区别
    HashMap与HashTable
  • 原文地址:https://www.cnblogs.com/drizzle-xu/p/10239288.html
Copyright © 2020-2023  润新知