Advanced operations of sqlalchemy

order_by (sort)

需要导包
from sqlalchemy import desc,asc

desc descending

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

asc ascending

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

limit (limit)

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

group_by (grouping)

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

func (aggregate function)

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

count() (number)

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

max() or min() (maximum or minimum)

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

avg() or sum() (average or sum)

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

lower() (turn lowercase)

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

Dry goods

cast() (force transfer)

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

substr() (cut the string, the subscript index starts from 1)

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

Return the second item in the result set

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

Return items 2-3 in the result set

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

Query conditions

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

Only query some attributes

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

Alias ​​the columns of the result set

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

Deduplication query (need to import distinct method)

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

D

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('') (alias)

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 query (~exists() if it does not exist)

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)

In addition to exists, any can also mean EXISTS

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

random

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

Guess you like

Origin blog.csdn.net/weixin_46073538/article/details/109343462