#! /usr/bin/env python import sys sys.path.insert(0, '.') import csv from tracker import db import traceback from datetime import datetime db.setup_session(application_name='ManualExport') sql_template = ''' select as_of, track_scid, playback_count, download_count, favoritings_count, comment_count, data->'user'->>'id' as artist_scid, created_at as published, duration, genre, data->>'tag_list' as tags from sc_track_stats_{part} s join sc_tracks t on t.scid = s.track_scid limit 5; ''' if __name__ == "__main__": print(f"-- Exporting Data --") print(f"\n{db.Session.get_bind()}\n----\n") try: filename = sys.argv[1] except IndexError: print("Usage: export.py ") sys.exit(3) max_part = db.ScTrackStats.max_partition_num() or 60 with open(filename, 'w') as outfile: csv_writer = csv.writer(outfile, delimiter='\t') for i in range(max_part, max_part-3, -1): print(f"{i} partition") result_proxy = db.Session.execute(sql_template.format(part=i)) if i == max_part: col_names = [a.name for a in result_proxy.cursor.description] csv_writer.writerow(col_names) csv_writer.writerows(result_proxy.cursor)