我已经编写了这个Python函数,使用SQLAlchemy包查询数据库:
def group_by_one_var(start_date, end_date, groupby):
data = db.session.query(
groupby,
MyModel.SnapDate,
func.count(MyModel.CustomerID).label("TotalCustomers")
)\
.filter(
MyModel.SnapDate >= start_date,
MyModel.SnapDate <= end_date
)\
.group_by(
groupby
).all()
return(data)
test_1 = group_by_one_var("2016-08-01", "2016-08-31", MyModel.Country) # Success
这个功能可以很好地根据我选择的变量对查询结果进行分组。
然而,当要按多个变量进行分组时,就会遇到问题。
以下是我编写的按两个变量进行分组的函数:
def group_by_two_vars(start_date, end_date, groupby):
data = db.session.query(
groupby[0],
groupby[1],
MyModel.SnapDate,
func.count(MyModel.CustomerID).label("TotalCustomers")
)\
.filter(
MyModel.SnapDate >= start_date,
MyModel.SnapDate <= end_date
)\
.group_by(
groupby[0]
)\
.group_by(
groupby[1]
).all()
return(data)
tes2 = group_by_two_vars("2016-08-01", "2016-08-31", (MyModel.Country, MyModel.Currency)) # Success
这个函数还可以很好地根据我选择的两个变量对我的查询结果进行分组。
我该如何修改这些函数以接受动态数量的分组条件?
谢谢!
.group_by(*groupby)
吗? - S. de Melo