From f5c76462d722d45645029754b4fc85252cf8212e Mon Sep 17 00:00:00 2001 From: James Taylor Date: Sat, 8 Jun 2019 02:35:21 -0700 Subject: Don't spam database with opening and closing when getting tags for many channels --- youtube/subscriptions.py | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/youtube/subscriptions.py b/youtube/subscriptions.py index a3af40f..ff74d94 100644 --- a/youtube/subscriptions.py +++ b/youtube/subscriptions.py @@ -125,14 +125,12 @@ def _remove_tags(channel_ids, tags): -def _get_tags(channel_id): - with open_database() as connection: - with connection as cursor: - return [row[0] for row in cursor.execute('''SELECT tag - FROM tag_associations - WHERE sql_channel_id = ( - SELECT id FROM subscribed_channels WHERE yt_channel_id = ? - )''', (channel_id,))] +def _get_tags(cursor, channel_id): + return [row[0] for row in cursor.execute('''SELECT tag + FROM tag_associations + WHERE sql_channel_id = ( + SELECT id FROM subscribed_channels WHERE yt_channel_id = ? + )''', (channel_id,))] def _get_all_tags(): with open_database() as connection: @@ -253,13 +251,15 @@ sub_list_item_template = Template(''' def get_subscription_manager_page(env, start_response): sub_list_html = '' - for channel_name, channel_id in _get_subscribed_channels(): - sub_list_html += sub_list_item_template.substitute( - channel_url = util.URL_ORIGIN + '/channel/' + channel_id, - channel_name = html.escape(channel_name), - channel_id = channel_id, - tags = ', '.join(_get_tags(channel_id)), - ) + with open_database() as connection: + with connection as cursor: + for channel_name, channel_id in _get_subscribed_channels(): + sub_list_html += sub_list_item_template.substitute( + channel_url = util.URL_ORIGIN + '/channel/' + channel_id, + channel_name = html.escape(channel_name), + channel_id = channel_id, + tags = ', '.join(_get_tags(cursor, channel_id)), + ) -- cgit v1.2.3