在我尝试将我的应用程序部署到 heroku 之前,我的烧瓶文件中有一个有效的查询。它工作的原因是我在本地使用 sqlite3 数据库,但必须在生产模式下使用 postgresql 数据库。
我遇到且无法解决的问题是以下 sqlalchemy 查询:
companies = StaffMember.query.filter_by(user_id=current_user.id).group_by(StaffMember.company).all()
当我在 postgresql 中运行它时,我收到以下错误:
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.GroupingError) 列“staffMembers.id”必须出现在 GROUP BY 子句中或在聚合函数中使用
根据我的发现,问题是 group_by 在 postgresql 中的工作方式不同,我应该尝试使用关键字“distinct”。但我真的不知道如何正确使用 distinct 来生成在 sqlalchemy 中独一无二的公司列表。
我试过这样的事情:
companies = StaffMember.query.filter_by(user_id=current_user.id).distinct(StaffMember.company).all()
或者:
companies = StaffMember.query.filter_by(user_id=current_user.id).filter_by(StaffMember.company).distinct()
我认为我没有正确创建查询。
我试图阅读这些文档,但在我目前的编码水平上我无法真正理解它们。