如何用SQLAlchemy ORM对数据库信息进行排序?

摘要:03 如何进行排序 3-1准备工作: 因为要排序,所以需要随机多谢数据,model见后文。也需要random进行随机 from model import User, Engine from sqlalchemy.orm import ses
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、修改】这里使用排序是不会对源数据进行修改的。
阅读全文