美文网首页Python
sqlalchemy 常用的排序方式

sqlalchemy 常用的排序方式

作者: 忘了呼吸的那只猫 | 来源:发表于2021-01-18 11:53 被阅读0次

    第一种:直接在查询语句中使用order_by

    现在就用第一种方法实现刚才所说(最新注册的用户的拍在前面),最新注册的也就是时间最大的。代码如下

        results = session.query(User).order_by(User.create_time.desc()).all()
        print(results)
    

    也可以

    results = session.query(User).order_by("create_time").all() print(results)
    

    结果是一样的

    第二种:在定义模型时声明排序方式

    每次在查询中定义排序太费时,太麻烦了。可以在查询时自动排序。
      
    我们在创建模型时,通过定义一个类属性 __mapper_args__,将其order_by设置为 create_time.desc() 即可,完整代码如下

    class User(Base):  
      __tablename__ = "user"  
      id = Column(Integer , primary_key=True , autoincrement=True)  
      name = Column(String(50) , nullable=False)  
      create_time = Column(DateTime , nullable=False , default=datetime.now)
      
      __mapper_args__ = {  
      "order_by":create_time.desc()  
      }  
      def __repr__(self):  
            return "name:%s,create_time:%s"%(self.name,self.create_time)
    

    然后再查询下,查询代码如下:

    results = session.query(User).all()
    print(results)
    

    运行查询代码,结果一样能实现我们想要的效果。

    第三种:使用 relationship 实现自动排序

    在指定relationship的时候,传递order_by参数来指定排序的字段
    例如:

    author = relationship('User', backref=backref( 'articles',order_by=create_time.desc())
    

    在调用author的时候就可以自动排序了

    相关文章

      网友评论

        本文标题:sqlalchemy 常用的排序方式

        本文链接:https://www.haomeiwen.com/subject/wwotzktx.html