Python全系列 教程
3567个小节阅读:5931.9k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
order_by方法排序:可以指定根据模型中某个属性进行排序,"模型名.属性名.desc()"代表的是降序排序。
relationship的方法中order_by属性:在指定relationship方法的时候,添加order_by属性来指定排序的字段。
方式1:order_by方法指定
xxxxxxxxxx
# 升序
users = ses.query(User).order_by(User.age).all()
# 降序
users = ses.query(User).order_by(User.age.desc()).all()
方式2:涉及两表时,定义模型时,用relationship方法中的order_by属性指定排序方式
xxxxxxxxxx
from random import randint
from sqlalchemy import Column,Integer,String,ForeignKey
from sqlalchemy.orm import relationship,backref
from db_util import Base,Session
class User(Base):
__tablename__ = 't_user'
id = Column(Integer, primary_key=True,autoincrement=True)
name = Column(String(32))
age = Column(Integer)
def __repr__(self):
return f'<User: id={self.id} name={self.name} age={self.age}>'
class News(Base):
__tablename__ = 't_news'
id = Column(Integer,primary_key=True,autoincrement=True)
title = Column(String(32),nullable=False)
content = Column(String(32),nullable=False)
read_count = Column(Integer)
uid = Column(Integer,ForeignKey('t_user.id'))
user = relationship('User',backref=backref('newss',order_by=read_count))
def __repr__(self):
return f'<User: id={self.id} title={self.title} content={self.content} read_count={self.read_count}>'
def create_user():
with Session() as ses:
for i in range(10):
user = User(name = f'用户{i}',age = randint(6,20))
ses.add(user)
for i in range(10):
news = News(title = f'新闻{i}',content = '新闻',read_count =randint(1, 1000))
user.newss.append(news)
ses.commit()
def query_user():
with Session() as ses:
users = ses.query(User).all()
for i in users[-1].newss:
print(i)
if __name__ == '__main__':
# Base.metadata.drop_all()
# Base.metadata.create_all()
# create_user()
query_user()
注意
__mapper_args__
参数的1.1版本已被抛弃
实时学习反馈
1. 在SQLAlchemy中,对数据排序说法错误的是?
A 可以通过order_by
方法,定义排序的方式
B 可以通过在__mapper_args__
方法,定义排序的方式
C 可以通过在relationship
中的backref中,定义排序的方式
D 默认的数据排序方式为升序
答案
1=>B