栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SQLAlchemy按功能顺序排序

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQLAlchemy按功能顺序排序

混合属性是既充当Python属性又充当SQL表达式的特殊方法。只要您的

difficulty
函数可以用SQL表示,它就可以像普通列一样用于过滤和排序。

例如,如果您根据问题的鹦鹉数来计算难度,如果问题超过30天则乘以十,则可以使用:

from datetime import datetime, timedeltafrom sqlalchemy import Column, Integer, DateTime, casefrom sqlalchemy.ext.hybrid import hybrid_propertyclass Problem(base):    parrots = Column(Integer, nullable=False, default=1)    created = Column(DateTime, nullable=False, default=datetime.utcnow)    @hybrid_property    def difficulty(self):        # this getter is used when accessing the property of an instance        if self.created <= (datetime.utcnow() - timedelta(30)): return self.parrots * 10        return self.parrots    @difficulty.expression    def difficulty(cls):        # this expression is used when querying the model        return case( [(cls.created <= (datetime.utcnow() - timedelta(30)), cls.parrots * 10)], else_=cls.parrots        )

并查询:

session.query(Problem).order_by(Problem.difficulty.desc())


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/640532.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号