![](/img/trans.png)
[英]Converting a query with built-in MySQL functions to flask-sqlalchemy
[英]Converting MySQL into Flask-SQLAlchemy
我目前正在嘗試使用SQLAlchemy的功能將我編寫的MySQL語句轉換為
我所擁有的是一個表Project
,一個用於Likes
。 這些包含項目的贊。 我想獲得所有特定的用戶項目,並獲得相應的喜歡計數。
這是MYSQL:
SELECT project.id as id, project.name as name,
project.description as description,
project.user_id as user_id,
iFNULL(like_count,0) as like_count,
project.created_on
FROM milo.project LEFT JOIN (
SELECT COUNT(*) as like_count, project_id
FROM milo.likes
GROUP BY project_id
) counting
ON counting.project_id = milo.project.id
WHERE (milo.project.user_id = 1)
ORDER BY project.created_on
因此,這將表Project
連接到通過查詢創建的另一個表,該查詢計算該項目的喜歡
此查詢獲得“ Like
計數:
res = db.session.query(func.count(likes.Likes.project_id), project.Project) \
.join(project.Project, (likes.Likes.project_id == project.Project.id)) \
.group_by(likes.Likes.project_id)
該查詢獲取用戶項目:
user_projects = Project.query.filter_by(user_id=1).all()
我最接近的是:
projects = db.session.query(func.count(Likes.project_id), Project) \
.join(Project, (Project.id == Likes.project_id)) \
.filter(Likes.user_id == user.id) \
.group_by(Likes.project_id).order_by(Project.created_on.desc()) \
.all()
但是,與此有關的問題是,如果一個項目沒有喜歡,則不會返回該項目! 顯然,它還需要一個“左連接”,我在這里找不到。
有人可以幫忙翻譯此聲明嗎?
我相信您正在尋找externaljoin 。
所以
.join(Project, (Project.id == Likes.project_id)) \
變
.outerjoin(Project, (Project.id == Likes.project_id))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.