在sqlalchemy中加入的混合属性

Zitrax

我可能尚未@hybrid_property完全掌握使用方法但是我想做的是使基于另一个表中的列的访问计算值变得容易,因此需要联接。

所以我拥有的是这样的东西(可以工作,但是很尴尬,感觉不对):

class Item():

:

@hybrid_property
def days_ago(self):
    # Can I even write a python version of this ?
    pass

@days_ago.expression
def days_ago(cls):
    return func.datediff(func.NOW(), func.MAX(Event.date_started))

这需要我Action在需要使用days_ago属性时,由调用方在表上添加联接。hybrid_property甚至是简化我需要获取days_ago值的查询的正确方法吗?

Zzzeek

您需要Action通过联接或延迟加载来加载或访问行的一种或另一种方式(请注意,目前尚不清楚EventvsAction什么,我假设您只有Item.actions -> Action)。

非“表达式”版本days_ago旨在对Action仅与当前实例相关的对象起作用通常,在混合环境中,这意味着只需迭代Item.actions并在Python中针对加载的Action对象执行操作尽管在这种情况下,您正在寻找一个简单的聚合,但是您可以选择运行查询,但是它又是本地的,self所以就像object_session(self).query(func.datediff(...)).select_from(Action).with_parent(self).scalar()

当针对另一个表形成混合表的表达式版本时,通常要求使用混合表的查询已经设置了正确的FROM子句,因此它看起来像session.query(Item).join(Item.actions).filter(Item.days_ago == xyz)这在“联接依赖关系混合”中进行了解释

如果可以使用相关的子查询,则此处的表达式可能会更好地作为column_property生成。请参见http://docs.sqlalchemy.org/en/latest/orm/mapping_columns.html#using-column-property-for-column-level-options上的内容

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在sqlalchemy中加入的混合属性

来自分类Dev

在sqlalchemy中加入值

来自分类Dev

sqlalchemy,混合属性案例声明

来自分类Dev

如何在sqlalchemy中加入两个KeyedTuple对象?

来自分类Dev

在Sqlalchemy Core中加入别名可选择项

来自分类Dev

SQLAlchemy通过引用关系的混合属性进行排序

来自分类Dev

SQLAlchemy混合属性表达式日期时间转换

来自分类Dev

SQLAlchemy通过引用关系的混合属性进行排序

来自分类Dev

SQLAlchemy混合属性表达式日期时间转换

来自分类Dev

在ElasticSearch中加入查询

来自分类Dev

在HQL中加入多个OR

来自分类Dev

在BigQuery中加入自己

来自分类Dev

在Laravel中加入查询

来自分类Dev

在休眠中加入数组

来自分类Dev

在Python中加入函数?

来自分类Dev

在javascript中加入符号

来自分类Dev

在 Snowflake 中加入 UDF

来自分类Dev

在搜索模型Yii2中加入关系后获得未知的空属性

来自分类Dev

PHP - 在循环中加入具有相同属性的元素

来自分类Dev

在Golang中加入地图键

来自分类Dev

Python:在列表中加入文件

来自分类Dev

在mysql中加入3表

来自分类Dev

在python列表中加入元素

来自分类Dev

在元组的Rdd中加入地图

来自分类Dev

在MongoDB中加入和分组

来自分类Dev

在vim的段落中加入行

来自分类Dev

在MySQL中加入相同的表

来自分类Dev

在方法中加入数组并返回

来自分类Dev

Python:在列表中加入文件