猿问

如何使用 SQLAlchemy 加入generate_series

我正在尝试按月打包一些事件。


date_list = func.generate_series(start, end, '1 month')


db.session.query(func.count(Event.id)).join(date_list, true()).outerjoin(Event, Event.time==func.date(date_list)).all()

但是我收到一个错误:


不支持错误: (psycopg2.errors.FeatureNotSuped) 在 JOIN 条件中不允许使用返回集函数


将连接左侧的序列与 SQLAlchemy 结合使用,然后使用聚合式计数的简单示例是什么?


繁星淼淼
浏览 135回答 2
2回答

元芳怎么了

我想知道你是否已经用它作为参考,并且忘记使用FunctionElement.alias()来生成一个可选的函数表达式。现在,您正在传递 set 返回函数表达式,如 ON 子句谓词的右侧所示。请改用 column() 来引用系列中的日期。控制连接的左侧是使用 Query.sfrom sqlalchemy import func, columnstart = ...end = ...date_list = func.generate_series(start, end, '1 month').alias('month')month = column('month')db.session.query(month, func.count(Event.id)).\    select_from(date_list).\    outerjoin(Event, func.date_trunc('month', Event.time) == month).\    group_by(month)    all()elect_from() 完成的:generate_series()

慕运维8079593

此代码适用于 sqlalchemy 1.4 和异步的最新更新        start = ...        end = datetime.now()        date_list = select(            func.generate_series(                start, end, timedelta(month=1)            ).label('month')        ).subquery()        response = await db_session.exec(            select(                func.count(Event.id),                                func.date_trunc('day', date_list.c.month)            )            .join(                date_list,                func.date_trunc('month', Event.time)                == func.date_trunc('month', date_list.c.month),            )            .order_by(date_list.c.month.desc())            .group_by(date_list.c.month)                    )        response = response.all()
随时随地看视频慕课网APP

相关分类

Python
我要回答