python oracle orm_Python ORM框架

user_type_list = session.query(UserTpye).all()

#  如果type(user_type_list[0] ),会发现,这其实是个对象,与前面的每一个对象就是一行对应了起来

也能加条件   user_type_list = session.query(UserTpye).filter(User.id>2)

for row in user_type_list:

print(row.id,row.title)

还有分组,排序,连表,通配符,子查询,分页limit,union,where....

ret = session.query(Users).filter(Users.id > 1 ,Users.name == '小明').all()            #  默认是and

ret = session.query(Users).filter(Users.id.between(1,3),Users.name=='小明').all()

ret = session.query(Users).filter(~Users.id.in_([1,2,3])).all                                       #  in_要加下划线,~代表not

ret = session.query(Users).filter_by(name='小明').all                                            #  传的是参数,不是表达式

通配符       ret = session.query(Users).filter.(Users.name.like('e%'))

限制     ret = session.query(Users)[1:2]

排序     ret = session.query(Users).order_by(Users.name.desc()).all

ret = session.query(Users).order_by(Users.name.desc(),Users.id.asc()).all

分组  ret = session.query(Users).group_by(Users.extra).all()

ret = session.query(

func.max(Users.id),

func.sum(Users.id),

func.min(Users.id)).group_by(Users.name).having(func.min(Users.id)>2).all()

连表  ret = session.query(Users,UsersType)                                                       #  没有加条件的连表(笛卡尔积)

ret = session.query(Users,UsersType).filter(User.usertype_id == UserType.id) #  有条件的连表查询

ret = session.query(Users).join(UserType)      #  相当于inner join

#  他会自己帮我们需找创建表时候的外键,所以后面的on usertype.id=users.user_type_id不用我们自己写

组合

q1=session.query(Users.name).filter(Users.id>2)

q2=session.query(Favor.caption).filter(Favor.id <2)

ret = q1.union(q2).all()                  #  取两组数据,上下连表,去重

ret = q1.union_all(q2).all()            #  不去重

临时表  q1=session.query(UserType).filter(UserType.id >2).subquery()    #  把q1当成子查询才能使用,不然就是SQL语句

ret = session.query(q1).all()      #  相当于 select * from (select * fom UserType where UserType > 2) as A

ret = session.query(UserType.id,session.query(Users).subquery()).all()     #  但是显示的是笛卡尔积

#  相当于select id,(select * from Users) from usertype

#  如果是 session.query(UserType,session.query(Users).filter(Users.id == 1).subquery)  也不行,因为相当于session.query(UserType,Users)  也是笛卡尔积

#  最后应该是这样的 session.query(UserType,session.query(Users).filter(Users.id == 1).as_scalar())  把表变成数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值