Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 动态地将GROUPBY子句添加到sql alchemy中_Python_Postgresql_Orm_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python 动态地将GROUPBY子句添加到sql alchemy中

Python 动态地将GROUPBY子句添加到sql alchemy中,python,postgresql,orm,sqlalchemy,flask-sqlalchemy,Python,Postgresql,Orm,Sqlalchemy,Flask Sqlalchemy,我有一个基本查询(需要查询的列),我正在尝试使用SQL Alchemy ORM向基本查询动态添加join和group by子句 我已经在这里找到了添加联接的操作 我从中创建了一个函数- add_join_conditions(query,join_conditions): for condition in join_conditions: query = query.join(*condition) 有人能帮我创建一个类似的函数吗?按列添加组(查询,按列分

我有一个基本查询(需要查询的列),我正在尝试使用SQL Alchemy ORM向基本查询动态添加join和group by子句 我已经在这里找到了添加联接的操作

我从中创建了一个函数-

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

有人能帮我创建一个类似的函数吗?按列添加组(查询,按列分组)

一个简单的解决方案是

 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()

一个简单的解决办法就是这样

 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:此表达式不支持运算符“getitem”。只要group by只有一列,我就可以应用group by。更新后,我发现了错误。我使用的是元组表示()而不是列表[],我尝试了此解决方案-但是,我遇到了以下错误:NotImplementedError:此表达式不支持运算符“getitem”。我可以应用group by,只要group by只有一列。更新后,我发现了错误。我使用的是元组表示()而不是列表[]