Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将MySQL转换为炼金术_Python_Mysql_Flask_Flask Sqlalchemy - Fatal编程技术网

Python 将MySQL转换为炼金术

Python 将MySQL转换为炼金术,python,mysql,flask,flask-sqlalchemy,Python,Mysql,Flask,Flask Sqlalchemy,我目前正在尝试使用SQLAlchemy的功能将我编写的MySQL语句转换为 我拥有的是一个表项目,还有一个表用于喜欢的项目。这些包含了类似于该项目的内容。我想得到所有特定的用户项目,并得到相应的like计数 这是MYSQL: SELECT project.id as id, project.name as name, project.description as description, project.user_id as user_id, iFNULL(like_co

我目前正在尝试使用SQLAlchemy的功能将我编写的MySQL语句转换为

我拥有的是一个表
项目
,还有一个表用于
喜欢的项目
。这些包含了类似于该项目的内容。我想得到所有特定的用户项目,并得到相应的like计数

这是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()
但问题是,如果一个项目没有喜欢的东西,它就不会被退回!显然,它还需要一个左连接,我在这里找不到


有人能帮我翻译一下这句话吗?

我相信你正在寻找

所以

变成

.outerjoin(Project, (Project.id == Likes.project_id))

我相信你正在寻找

所以

变成

.outerjoin(Project, (Project.id == Likes.project_id))

我不认为这是正确的,我想要一个正确的连接,因为我想得到所有的项目,如果他们有一个相似的计数,得到外部连接将给所有喜欢加上我的坏项目。我认为select_from关键字可能会有所帮助,但我没有使用它的任何经验。没问题。谢谢你的尝试!我不认为这是正确的,我想要一个正确的连接,因为我想得到所有的项目,如果他们有一个相似的计数,得到外部连接将给所有喜欢加上我的坏项目。我认为select_from关键字可能会有所帮助,但我没有使用它的任何经验。没问题。谢谢你的尝试!我来看看:)