sqlalchemy的高级操作

order_by(排序)

需要导包
from sqlalchemy import desc,asc

desc 降序

db.session.query().order_by(desc()).all()

asc升序

db.session.query().order_by(desc()).all()

limit (限制)

db.session.query().limit().all()

group_by(分组)

db.session.query().group_by().all()

func(聚合函数)

需要导包
from sqlalchemy import account,max,min,avg

count() (个数)

db.session.query(func.acount()).all()

max() or min() (最大值or最小值)

db.session.query(func.max()).all()
db.session.query(func.max()).all()

avg() or sum() (平均值or求和)

db.session.query(func.avg()).all()

lower() (转小写)

db.session.query().filter(func.lower() == '').all()

干货

cast() (强转)

db.session.query(func.cast('',Numeric(10))).all()

substr() (切割字符串,下标索引是从1开始)

db.session.query(func.substr('',start,length)).all()

返回结果集的第二项

user = session.query(User).get(2)

返回结果集中的第2-3项

users = session.query(User)[1:3]

查询条件

user = session.query(User).filter(User.id < 6).first()

只查询部分属性

users = session.query(User.name).order_by(desc(User.name))
for user in users:
    print user.name

给结果集的列取别名

users = session.query(User.name.label('user_name')).all()
for user in users:
    print user.user_name

去重查询(需要导入distinct方法)

from sqlalchemy import distinct
users = session.query(distinct(User.name).label('name')).all()

统计查询

user_count = session.query(User.name).order_by(User.name).count()
age_avg = session.query(func.avg(User.age)).first()
age_sum = session.query(func.sum(User.age)).first()

label(’’) (别名)

users = session.query(func.count(User.name).label('count'), User.age).group_by(User.age)
for user in users:
    print 'age:{0}, count:{1}'.format(user.age, user.count)

exists查询(不存在则为~exists())

from sqlalchemy.sql import exists
session.query(User.name).filter(~exists().where(User.role_id == Role.id))
SELECT name AS users_name FROM users WHERE NOT EXISTS (SELECT * FROM roles WHERE users.role_id = roles.id)

除了exists,any也可以表示EXISTS

session.query(Role).filter(Role.users.any())

random

from sqlalchemy.sql.functions import random
user = session.query(User).order_by(random()).all()

你可能感兴趣的:(sqlalchemy,数据库,python)