【发布时间】:2020-08-18 07:52:37
【问题描述】:
我正在尝试执行一个查询,该查询选择属于用户朋友组的用户名、您关注的人以及用户是 groupCreator 的组中的用户名。然后,我试图计算每个用户在所有帖子中的总反应,这些帖子是上面所选用户名的一部分,用于分析。我知道这些查询看起来很糟糕,抱歉!
我的代码给了我这个错误:
pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use near 'Person JOIN
Photo ON (Person.username = Photo.poster) JOIN ReactTo USING (pID)WH' at line 1")
我真的不明白为什么当它在 MySQL 硬编码中工作时会出现此错误。这是我的代码。感谢您的帮助。
def run_sql_many(query, data):
cursor = conn.cursor()
cursor.execute(query, data)
data = cursor.fetchall()
cursor.close()
return data
user = session['username']
qAllLikes = 'SELECT firstName, lastName, COUNT(emoji) AS num_reactions' \
'FROM Person JOIN Photo ON (Person.username = Photo.poster) JOIN ReactTo USING (pID)' \
'WHERE Person.username IN (' \
'SELECT DISTINCT username ' \
'FROM (SELECT username ' \
'FROM BelongTo ' \
'WHERE groupName IN (' \
'SELECT groupName' \
'FROM BelongTo' \
'WHERE username = %s)' \
'OR username IN (' \
'SELECT username' \
'FROM BelongTo' \
'WHERE groupCreator = %s)' \
') AS groupUsers' \
'UNION' \
'(SELECT username' \
'FROM Follow JOIN Person ON (Follow.followee = Person.username)' \
'WHERE follower = %s AND followStatus = 1))' \
'GROUP BY firstName, lastName'
AllLikes = run_sql_many(qAllLikes, (user, user, user))
return render_template('home.html', username=user, posts=data, postAnalytics=AllLikes)
【问题讨论】:
-
在将字符串分成几行的地方需要在单词之间留有空格。你最好使用
'''multi-line string'''。 -
num_reactions和FROM,以及其他任何地方
标签: mysql python-3.x flask pymysql