Я написал эту функцию питона для запроса базы данных с помощью пакета SQLAlchemy:группы по нескольким столбцам в 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)'? –
Да, спасибо за кучи, это то, чем я был! – efbbrown