zoukankan      html  css  js  c++  java
  • 单表操作

    from  sqlalchemy.ext.declarative  import  declarative_base##父类
    from sqlalchemy import Column###字段对象
    from sqlalchemy import Text,String,Integer
    from sqlalchemy import create_engine##创建引擎,连接sql
    ##引擎是对orm进行解析
    from sqlalchemy.orm import sessionmaker




    base=declarative_base()
    ##创建表
    class table(base):
    ##表名
    __datatable__='book'
    ##字段
    book_name=Column(String,unique=True)
    book_price=Column(Integer,default=0)


    ##创建引擎
    engine=create_engine(
    'mysql+pymysql://root:密码@127.0.0.1:3306/orm4?charset=utf8',
    max_overflow=5,#超过连接池大小之外最多创建的连接
    pool_size=5,连接池大小
    pool_timeout=0,##线程池
    pool_recycle=-1##多久对线程池进行回收
    )


    engine_bind=sessionmaker(bind=engine)#####连接引擎

    session=engine_bind()##创建引擎对象








    ##下面是msql操作


    ####添加数据
    add_obj=table(book_price=90,book_name='go')##tuple
    session.add(add_obj)
    #单条添加字段进去


    ###添加多条数据进去
    add_objs=([
    table(book_price=90, book_name='go'),
    table(book_price=90, book_name='go'),
    ]
    )
    session.add_all(add_objs)


    '''
    单条数据是tuple>>(),多条是列表>>[]
    '''


    ####查看数据


    ##1,查看全部数据,all()
    data=session.query(table).all()##注意一下是看这个类名字,不是表名
    print(data)
    for i in data:
    print(i.book_name)



    ##2.查看单条数据,filter()
    ##筛选出条件出来,匹配结果
    data=session.query(table).filter(id=1)
    print(data)

    #select id,name as cname from users:##如果设置了别名的话
    result=session.query(table.book_price,table.book_name.label('cname'))##要通过这样的方式来取值
    for item in result:
    print(item[0],item.id,item.cname)

    ##拿到这门下的所有的信息
    a=session.query(table).filter_by(book_name='go').all()


    ####,加进来是通过and的符号加进来的,默认条件是and
    session.query(table).filter(table.book_price>100).all()

    #####3,between,在什么范围之内
    session.query(table).filter(table.book_price.between(0,100),table.book_name=='go').all()


    ######4,in
    session.query(table).filter(table.book_price.in_([100,30,90,20])).all()
    session.query(table).filter(~table.book_price.in_([100,30,90,20])).all()##查询不在这里面的

    ##子查询,嵌套查询
    session.query(table).filter(table.book_price.in_(session.query(table).filter(table.book_price==90))).all()


    from sqlalchemy import and_,or_
    session.query(table).filter(and_(table.book_price>100,table.book_name=='go')).all()##nad的条件,默认是and,也可以不加
    session.query(table).filter(or_(table.book_price>100,table.book_name=='go')).all()##nad的条件,or的关系


    ##构造复杂的and和or的关系
    session.query(table).filter(
    or_(
    table.book_name=='go',
    and_(table.book_name=='go',table.book_price>100),
    )
    ).all()



    ##上面传的是表达式,下面是参数
    ####filter_by
    session.query(table).filter_by(book_name=100).all()
    ##注明一下,这个=的话是**kwargs来进行接收,里面原理也是filter来进行匹配


    ##通配符
    session.query(table).filter(table.book_price.like('e%')).all()##通配符,进行匹配
    session.query(table).filter(~table.book_price.like('e%')).all()##通配符,进行匹配


    ###切片
    #通过索引来一个一个的取值
    # session.query(table)[3:7]

    session.query(table).order_by(table.book_price.desc(),table.book_price.asc()).all()#按照这个顺序,一个是从大到小,第二个是从小到大


    ##分组,func
    from sqlalchemy.sql import func##分组
    ret=session.query(table).group_by(table.book_price).all()

    ret=session.query(table).group_by(table.book_price).all()
    for row in ret:
    print(item)


    ##最大值,最小值
    ret=session.query(
    # func.max(table.id),##取最大值,
    # func.min(table.id)
    table.id,
    func.count(id),
    ).group_by(table.book_price).all()






    ##having,根据什么来进行分组
    session.query(
    table.book_price
    ).group_by(table.book_name).having(func.min(table.id)>2).all()



    '''
    select id,name frm userds

    '''

    # UNION:去重
    #union 上下进行拼接
    # select * from xxsub;
    # UNION
    # select id,name from basi2;
    # qi拼接q2,进行组合
    # q1.union(q2).all()


    # UNION_ALL:不去重处理














  • 相关阅读:
    样式问题
    布局
    通用模板实现可变参数函数
    使用单例模式实习string类
    动态生成一维数组和二维数组
    自定义的类传数据到主窗口控件上的方法
    使用TableView
    G480折腾上了黑苹果,完美了,哈哈
    error C2383: 此符号中不允许有默认参数
    动态链接库的隐式动态链接和显示动态链接
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/9986842.html
Copyright © 2011-2022 走看看