【发布时间】:2019-02-22 19:00:22
【问题描述】:
我有几个查询,我觉得可以在 mySQL 中重构并更轻松地完成,但我不知道如何去做。我正在以编程方式执行此操作,但我确信我可以加快速度。
基本上从用户那里获取一个 id,查看数据库并获取可能与给定参数具有相似标签的行的 id。确保排除原始参数并且不包括任何重复的 ID。
有没有办法在纯 sql 中做到这一点?
这是我当前的代码:
def getRelatedEvents(self, memberId, eventId):
relatated_events = []
# first we get all the tags related to this event
for tag in self.db.query("select tagName from event_tags where eventId={}".format(eventId)):
# we iterate through each tag and find the eventIds for it
events = self.db.query("SELECT eventId from event_tags where tagName LIKE %s and eventId != %s LIMIT 3",
'%'+tag['tagName']+'%', eventId)
# we group them in a list, excluding ones that are already in here
for id in events:
if id['eventId'] not in relatated_events:
relatated_events.append(id['eventId'])
# we get the extra event info for each item in the related list and return
return [self.getSpecificEvent(memberId, item) for item in relatated_events]
【问题讨论】:
标签: python mysql sql python-2.7