python SQLAlchemy ORM——从零开始学习03 如何针对数据库信息进行排序
1.python SQLAlchemy ORM——从零开始学习03 如何针对数据库信息进行排序
2.python SQLAlchemy ORM——从零开始学习 02简单的增删查改3.python SQLAlchemy ORM——从零开始学习 01 安装库4.python SQLAlchemy ORM——从零开始学习 04 如何过滤(筛选)数据库中的数据03 如何进行排序
3-1准备工作:
因为要排序,所以需要随机多谢数据,model
见后文。也需要random
进行随机
from model import User, Engine from sqlalchemy.orm import sessionmaker import random Session = sessionmaker(bind=Engine) session = Session()
def add_random(): names = ['arthur', 'Abigail Williams', 'caster', 'Lilith'] ages = [14, 18, 20, 21, 23, 25, 28, 30, 31, 100] for x in range(20): user = User(name=random.choice(names), age=random.choice(ages)) # 创建随机user session.add(user) # 这里每次添加,会存放到缓冲区,之后一并提交,虽然可以使用users存放再add_all,但是这增加了开销,不过可读性增加了 session.commit()
数据库可以看到【不一定相等,毕竟是随机,但数量是20就行】:
如果多次点击了导致多于20个怎么办,我确实是点多了一次,用我自己写的这个接口就能删到只剩20了,或者你自己修改都可以
def remove_at_lest_20(): users = session.query(User).filter(User.id > 20).all() for user_one in users: session.delete(user_one) session.commit()
3-2 排序
其实只需要了解order_by()
这个接口就好,先看看官方对这个接口的eg:
q = session.query(Entity).order_by(Entity.id, Entity.name)
其实基本上同理,他可以接收多个参数
def order_sort(): Users = session.query(User).order_by(User.age, User.name).all() # Users = session.query(User).order_by(User.age.desc(), User.name).all() #其中使用.desc可以进行倒序排序 for user in Users: print(user)
顺序的结果是(部分):
倒叙的结果也是没问题的:
PS:注意,如果后面commit是没有效果的,因为需要显式修改数据库才能记录【如add、del、修改】这里使用排序是不会对源数据进行修改的。
3-3 code
model
from sqlalchemy import create_engine, Integer, String from sqlalchemy.orm import DeclarativeBase, mapped_column,Mapped from typing import Optional url = "sqlite:///database_02.db" #记得修改一下自己的数据库 Engine = create_engine(url,echo=True) class Base(DeclarativeBase): #通过类构造,这样子会有语法提示 pass class User(Base): #构造自己的User表 __tablename__ = "User" id:Mapped[int] = mapped_column(primary_key=True) #构造方法和之前不一样,但是效果是一样的,我这里偷学了,不用管,直接复制就好 name:Mapped[str] = mapped_column(nullable=True) age:Mapped[Optional[int]] def __repr__(self): #方便后续直接print的,有兴趣可以了解一下 return f"id:{self.id}, name:{self.name}, age:{self.age}" Base.metadata.create_all(Engine)
lesson2
from model import User, Engine from sqlalchemy.orm import sessionmaker import random Session = sessionmaker(bind=Engine) session = Session() def add_random(): names = ['arthur', 'Abigail Williams', 'caster', 'Lilith'] ages = [14, 18, 20, 21, 23, 25, 28, 30, 31, 100] for x in range(20): user = User(name=random.choice(names), age=random.choice(ages)) # 创建随机user session.add(user) # 这里每次添加,会存放到缓冲区,之后一并提交,虽然可以使用users存放再add_all,但是这增加了开销,不过可读性增加了 session.commit() def remove_at_lest_20(): users = session.query(User).filter(User.id > 20).all() for user_one in users: session.delete(user_one) session.commit() def order_sort(): # Users = session.query(User).order_by(User.age, User.name).all() Users = session.query(User).order_by(User.age.desc(), User.name).all() #其中使用.desc可以进行倒序排序 for user in Users: print(user) if __name__ == '__main__': order_sort() # remove_at_lest_20()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)