簡體   English   中英

將MySQL轉換為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM