1) SELECT구문과 JOIN구문을 사용

   - 해당 사용자의 트윗들과 해당 사용자가 팔로우하는 사용자들의 트윗들을 데이터베이스에서 한번의 Query로 읽음
   - 읽어들인 로우(row)가 여러개일 것을 감안하여 fetchall()메소드를 사용해서 전부 다 읽음

2) 1)에서 읽어 들인 트윗 리스트를 딕셔너러 리스트(list) 형태로 변환

   - 즉, 하나 하나의 로우를 딕셔너리로 변환하여 전체를 for문을 활용하여 리스트에 담음

3) 2)에서 변환한 딕셔너리 리스트를 JSON형태로 HTTP 응답(response)보냄

 

@app.route('/timeline/<int:user_id>', methods=['GET'])
    def timeline(user_id):
        row = app.database.execute(text("""			# 1)
        	SELECT
            	t.user_id,
                t.tweet
            FROM tweets t
            LEFT JOIN users_follow_list ufl ON ufl.user_id = :user_id
            WHERE t.user_id = :user_id
            OR t.user_id = ufl.follow_user.id
        """), {
        	'user_id' : user_id
        }).fetchall()
        
        timeline = [{							# 2)
        	'user_id' : row['user_id'],
            'tweet'   : row['tweet']
        } for row in rows]
        
        return jsonify({						# 3)
        	'user_id' : user_id,
            'timeline' : timeline
        })
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기