【问题标题】:Dynamically add group by clauses to sql alchemy将 group by 子句动态添加到 sql alchemy
【发布时间】:2019-03-06 05:17:08
【问题描述】:

我有一个基本查询(带有要查询的必要列),我正在尝试使用 SQL Alchemy ORM 将 join 和 group by 子句动态添加到基本查询 我已经在这里找到了添加连接的操作 SQLAlchemy - How to add dynamic left joins to a query?

我从中创建了一个函数-

    add_join_conditions(query,join_conditions):
      for condition in join_conditions:
        query = query.join(*condition)

谁能帮我创建一个类似的函数 - add_group_by_columns(query,group_by_columns)

【问题讨论】:

    标签: python postgresql orm sqlalchemy flask-sqlalchemy


    【解决方案1】:

    一个简单的解决方案是这样的

     def add_group_by_columns(query, group_by_columns):
       return query.group_by(*group_by_columns)
    

    你可以这样使用它

    q = db.session.query(Order.product_id, Order.seller_id, func.count(Order.id)).filter(Order.user_id==12)
    
    q1 = add_group_by_columns(q, [Order.product_category_id, Order.seller_id])
    
    q1.all()
    

    【讨论】:

    • 我确实尝试过这个解决方案 - 但是,我得到了这个错误:NotImplementedError: Operator 'getitem' is not supported on this expression 只要我能够应用组只有一列可供分组。
    • 更新,我发现了我的错误。我使用元组表示 ( ) 而不是使用列表 [ ]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    相关资源
    最近更新 更多