from playlister.connectors import mysql from playlister.models.spotify_playlist_day import SpotifyPlaylistDay, SpotifyPlaylist7day, SpotifyPlaylist30day from sqlalchemy.sql import func time_period_to_table = { '1d': SpotifyPlaylistDay, '7d': SpotifyPlaylist7day, '30d': SpotifyPlaylist30day} def get_spotify_playlist_day_from_db(isrc, time_period): params = {'isrc': isrc} session = mysql.playlister_session() table_model = time_period_to_table.get(time_period, SpotifyPlaylistDay) # db_rec = session.query(table_model).filter_by( # **params).group_by('listener_country').all() db_recs = session.query( func.sum(table_model.streams), table_model.playlist_id, table_model.playlist_user_id, table_model.isrc).filter_by( **params).group_by( table_model.playlist_id, table_model.playlist_user_id, table_model.isrc).order_by( func.sum(table_model.streams).desc()).limit(10) ret_list = [] for db_rec in db_recs: tmp_dict = {} tmp_dict['streams'] = db_rec[0] tmp_dict['playlist_id'] = db_rec[1] tmp_dict['playlist_user_id'] = db_rec[2] tmp_dict['isrc'] = db_rec[3] ret_list.append(tmp_dict) session.close() return ret_list