可以按模型中的属性进行排序吗?

2023-12-04

可以按模型中的属性进行订购吗?

class PlayerModel(Base):
    __tablename__ = 'players'
    alliances_id = Column(Integer, ForeignKey('alliances.id'), nullable=True)
    alliance = relationship('AllianceModel')
    username = Column(String(30), nullable=False)
    wins = Column(Integer, default=0, nullable=False)
    defeats = Column(Integer, default=0, nullable=False)

    @property
    def score(self):
        number = self.wins + self.defeats
        if number:
            return self.wins / number
        return 0

in query

 `for player in session.query(PlayerModel).order_by(PlayerModel.wins+PlayerModel.defeats):`

它可以工作,但当我输入时 id 不起作用

session.query(PlayerModel).order_by(PlayerModel.wins+PlayerModel.score):`

它报告错误期望 SQL 字符串。可以按 desc 中的属性排序吗? (我可以加载所有内容并在应用程序级别进行排序,但如果有大量记录,那就不好了。其他肮脏的解决方案是归档分数并触发,但使用顺序和属性似乎更优雅,可能吗?)


是的,你需要使用一个名为混合属性。该表达式需要用 Python 逻辑和 SQL 表达式逻辑来表述:

from sqlalchemy.ext.hybrid import hybrid_property
from sqlalchemy import case

class PlayerModel(Base):
    __tablename__ = 'players'
    alliances_id = Column(Integer, ForeignKey('alliances.id'), nullable=True)
    alliance = relationship('AllianceModel')
    username = Column(String(30), nullable=False)
    wins = Column(Integer, default=0, nullable=False)
    defeats = Column(Integer, default=0, nullable=False)

    @hybrid_property
    def score(self):
        number = self.wins + self.defeats
        if number:
            return self.wins / number
        return 0

    @score.expression
    def score(cls):
        number = cls.wins + cls.defeats
        return case([(number > 0, cls.wins / number)], else_ = 0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可以按模型中的属性进行排序吗? 的相关文章

  • del 在 Python 中什么时候有用?

    我实在想不出为什么 Python 需要del关键字 大多数语言似乎没有类似的关键字 例如 我们可以分配一个变量 而不是删除一个变量None到它 当从字典中删除时 del可以添加方法 有理由保留吗del在Python中 还是Python前垃圾
  • 为什么这个“[::-1]”在Python中返回一个反向列表? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 切片表示法的良好入门指南 https stackoverflow com questions 509211 good primer for python slice notation P
  • 在ubuntu中安装pyinterval

    我正在尝试安装 python 库 pyinterval 它需要 crlibm C 标头 我已安装该标头 没有错误 但似乎是问题的根源 当我跑步时 sudo easy install pyinterval 我得到以下信息 Searching
  • 如何从数据存储区刷新 NDB 实体?

    我希望能够在我的代码调用的测试中断言Model put 对于已修改的实体 不幸的是 似乎正在进行一些缓存 例如以下代码 from google appengine ext import ndb class MyModel ndb Model
  • 如何有效地找到两个轮廓集之间的所有交点

    我想知道找到两组轮廓线之间所有交点 舍入误差 的最佳方法 哪种方法最好 这是示例 import matplotlib pyplot as plt import numpy as np x np linspace 1 1 500 X Y np
  • OSMNX - 边缘的哪个“部分”被认为是最近的

    我正在使用 OSMNX 中的 returned edges 函数 我不清楚在进行此计算时使用边缘的哪个 部分 它是边缘的任何部分吗 是中间点吗 对于网络中的长边来说 这会产生很大的差异 这取决于您如何参数化该函数 来自nearest edg
  • python 使用曲面图和第四个变量的滑块可视化 4d 数据

    如何使用前 3 个变量和第四个变量的 3 维曲面图作为滑块来可视化 4 维数据 从 csv 文件加载 集 我写了一个非常小的示例 重点介绍了实现此目标的方法 import numpy as np import matplotlib pypl
  • 我可以使用对象(类的实例)作为 Python 中的字典键吗?

    我想使用类实例作为字典键 例如 classinstance class dictionary classinstance hello world Python似乎无法将类作为字典键处理 还是我错了 另外 我可以使用像 classinstan
  • 如何设置 pandas DataFrame _repr_html_ 方法的默认样式?

    我有一个 pandas DataFrame 其中有一列是 url 并且我编写了以下格式化程序以将其作为链接呈现在我的笔记本中 def make clickable val target blank to open new window re
  • Pygame - 两个圆圈的碰撞检测

    我正在制作一个碰撞检测程序 其中我的光标是一个半径为 20 的圆 当它碰到另一个圆时应该将值更改为 TRUE 出于测试目的 我在屏幕中心有一个半径为 50 的固定圆 我可以测试光标圆是否击中固定圆 但它不能正常工作 因为它实际上是在测试它是
  • python中matlab find函数的替换

    我正在尝试寻找合适的python函数来替代matlabfind在我的脚本和一些谷歌搜索中我看到np where 大多数时候都能解决目的 但在双重条件的情况下 我有不同的输出 有人可以告诉我这种方法有什么问题以及如何继续吗 示例代码和差异如下
  • 如何在Python中生成0-1矩阵的所有可能组合?

    如何生成大小为 K N 的 0 1 矩阵的所有可能组合 例如 如果我取 K 2 和 N 2 我会得到以下组合 combination 1 0 0 0 0 combination 2 1 0 0 0 combination 3 0 1 0 0
  • 重置Keras模型的所有权重

    我希望能够重置整个 Keras 模型的权重 这样我就不必再次编译它 编译模型目前是我的代码的主要瓶颈 这是我的意思的一个例子 import tensorflow as tf model tf keras Sequential tf kera
  • 由 asyncio.new_event_loop 创建的事件循环挂起

    以下代码只是挂起而不打印任何内容 import asyncio async def foo loop print foo loop stop loop asyncio new event loop asyncio ensure future
  • Python Selenium 将内容添加到 pandas 数据帧

    我正在尝试循环list用于抓取内容的邮政编码this url http kadastralekaart com 但我面临着错误 例如TimeoutException and StaleElementReferenceException 我该
  • 在 ubuntu 12.04 上安装 ReviewBoard

    我正在尝试使用 easy install 在 ubuntu 12 04 上安装 ReviewBoard http www reviewboard org docs manual 1 7 admin installation linux ht
  • Django 和 REST API 服务基于计算的请求

    我在 Django 中编写了一个机器学习应用程序 以便用户可以在表单中指定一些参数并训练模型 模型训练完成后 我想满足以下请求 curl http localhost 8000 model input XYZ 我希望 Django 返回给定
  • 二进制补码扩展 python?

    我想知道是否有一种方法可以像在 Python 中的 C C 中一样使用标准库 最好在位数组上 进行二进制补码符号扩展 C C Example program include
  • 如何在(最好是纯)Python 中解码 QR 码图像?

    TL DR 我需要一种使用 最好是纯 Python 从图像文件中解码 QR 码的方法 我有一个带有 QR 码的 jpg 文件 我想使用 Python 对其进行解码 我发现有几个库声称可以做到这一点 PyQRCode 网站在这里 http p
  • Python:正则表达式 findall

    我使用 python 正则表达式从给定字符串中提取某些值 这是我的字符串 mystring txt sometext somemore text here some other text course course1 Id Name mar

随机推荐

  • 将参数传递给 JDBCPreparedStatement

    我正在尝试为我的程序制作验证类 我已经建立了与 MySQL 数据库的连接 并且已经将行插入到表中 该表包括firstName lastName and userID字段 现在我想通过构造函数的参数选择数据库中的特定行 import java
  • Swift 泛型函数无法将类型的值转换为预期的参数类型

    我尝试创建通用函数 func importArray
  • Pandas groupby 值与 bin

    这似乎是一个简单的问题 但我需要你的帮助 例如 我有 df x 1 2 3 4 5 6 7 8 9 10 y 2 1 3 1 8 9 6 7 4 6 如何将 x 在 1 到 5 和 6 到 10 的范围内分组 并计算这两个 bin 的平均值
  • JFreeChart:使用 java.time.LocalDate 或 java.time.LocalDateTime 创建图表

    java util Date非常容易出错 它死了 长命java time Given a Map
  • ASP.NET MVC4,视图将旧值返回到控制器

    我是 MVC 和 ASP NET 的新手 我的要求是 我必须第一次在我的视图中显示两条记录 并且我的视图包含一个 交换 按钮 当我按下此按钮时 应该执行控制器的后操作 并且它必须采用原始视图模型 并且需要交换两个记录并且应该呈现相同的视图
  • 在 url 中使用 # 打开模式

    我对这个可能是愚蠢的问题感到抱歉 但我想简单地在 url 中使用 打开模态 因此 如果我调用 www domain com modal1 它将打开已经弹出模式的页面 哦 我正在使用jquery 谢谢你 许多应用程序框架 我偏向backbon
  • 从一组观察结果创建队列式数据框[重复]

    这个问题在这里已经有答案了 我是 R 新手 有一个简单的问题 因为我仍在学习 R 数据操作 管理的风格 我有一段时间内基本临床特征 血压 胆固醇等 观察数据集 每个观察结果都有患者 ID 和日期 但作为单独的行项目输入 像这样的事情 Pat
  • VBA 查找和替换

    我正在使用 Excel VBA 从电子表格生成 Word 文档 作为最后一步的一部分 我想找到所有双段落并将其替换为单段落 基本代码 Dim objWord Dim objDoc Dim objSelection Set objWord C
  • 表视图中的单元格没有响应

    我正在开发一个待办事项列表应用程序 每当我在simulator并尝试打印我的项目array 其他单元格项目被打印 这是我的代码 import UIKit class TodoListViewController UITableViewCon
  • 递归时变量意外更改?

    Context 我目前正在尝试 Reddit 的 r 每日程序员挑战 这个想法是找到 ASCII 迷宫的解决方案 不幸的是 递归的工作方式与我的预期不同 程序检查是否有空间可以移动到当前空间的右侧 左侧 下方或上方 如果存在 则将空间移动到
  • Android 中平板电脑的布局

    我想在 Android 中为平板电脑和手机创建不同的布局 我应该将布局资源放在哪里才能实现这种差异化 我知道这是一个老问题 但为了它 根据文档 您应该像这样创建多个资产文件夹 res layout main activity xml For
  • 如何提高数据严重偏差的养猪工作的绩效?

    我正在运行一个 Pig 脚本 该脚本执行 GROUP BY 和嵌套 FOREACH 由于一两个减少任务 该脚本需要几个小时才能运行 例如 B GROUP A BY fld1 fld2 parallel 50 C FOREACH B U A
  • 像蜗牛一样在路径上进行 SVG 动画

    I have the following SVG and I would like to draw the circles pixel by pixel on the path after moveing It s like when th
  • 使用 JQuery 和 AJAX 刷新 div 以显示 Django 中的新评级

    我是 django 的新手 找不到仅刷新 div 的方法 并且 div 显示了当前的星级评级 我的想法是 用户可以通过单击星星来查看平均评分并对某些内容进行评分 点击后我希望星星显示新的平均评分 而无需刷新整个页面 这是div div di
  • 如何编写最能利用 CPU 缓存来提高性能的代码?

    这听起来像是一个主观问题 但我正在寻找的是特定的实例 您可能遇到过与此相关的实例 如何使代码 缓存有效 缓存友好 更多的缓存命中 尽可能少的缓存未命中 从两个角度来看 数据缓存 程序缓存 指令缓存 即代码中与数据结构和代码构造相关的哪些内容
  • 与 0b 的按位或运算将给定数字转换为负数

    我需要使用按位运算符执行某些操作 假设我们有这个 40 位无符号整数 1071698660929当我申请它时OR运算符和无符号右移运算符我得到这个负整数 Input 1071698660929 gt gt gt 0 0b0 Output 2
  • java.lang.IllegalArgumentException:Jetty ALPN/NPN 尚未正确配置

    Getting java lang IllegalArgumentException Jetty ALPN NPN has not been properly configured 同时使用gRPC google pub sub 发布 消费
  • Mono.Cecil - 如何获取方法体的简单示例

    我一直在寻找新手问题 但找不到简单的例子 谁能给我一个简单的例子 如何将 MethodBody 放入最可用的字符串结果中 喜欢 using Mono Cecil using Mono Cecil Cil namespace my publi
  • Jhipster4,Angular2:如何在html中包含静态图像

    你能帮我在 html 模板中包含静态图像吗 我使用 jhipster 生成器 选择 Angular 2 生成了项目 现在我尝试在组件的 html 模板中包含静态图像 例如导航栏组件 into navbar component html 我将
  • 可以按模型中的属性进行排序吗?

    可以按模型中的属性进行订购吗 class PlayerModel Base tablename players alliances id Column Integer ForeignKey alliances id nullable Tru