将为 sqlite 编写的 sqlalchemy 查询转换为 postgres
Posted
技术标签:
【中文标题】将为 sqlite 编写的 sqlalchemy 查询转换为 postgres【英文标题】:convert sqlalchemy query written for sqlite to postgres 【发布时间】:2022-01-10 06:07:39 【问题描述】:使用 sqlite 制作的 Flask 应用程序现在转换为 postgres。我有以下查询来收集多家商店的每日销售额。然后将销售额放入一个列表中以在 chartjs 图表中使用。
daily_chart = (
db.session.query(Sales, func.sum(Sales.sales).label("total_sales"))
.filter(Sales.date >= start_week, Sales.date <= end_week)
.group_by(Sales.date)
.order_by(Sales.date)
)
values1 = []
for v in daily_chart:
values1.append(v.total_sales)
我收到以下错误。
(psycopg2.errors.GroupingError) column "Sales.id" must appear in the GROUP BY clause or be used in an aggregate function
我尝试使用 with_entities 但并不真正了解 sql,也找不到适用于 func 语句的答案。
【问题讨论】:
【参考方案1】:尝试从query
语句中删除Sales
。
【讨论】:
我刚刚在查询中将 Sales 更改为 Sales.date 并且它起作用了。 是的。我认为在那里有销售是试图带来如果你不按 id 分组的话你不能带来的 id。 在 SQL 中,您可以看到这种行为,请参阅这个 DBFIDDLE:dbfiddle.uk/…以上是关于将为 sqlite 编写的 sqlalchemy 查询转换为 postgres的主要内容,如果未能解决你的问题,请参考以下文章
Python3+SQLAlchemy+Sqlite3实现ORM教程
SQLAlchemy 选择在 SQLite 表上给出不同的结果,原始 sql 与可选