22import os
33from typing import List
44import gzip
5- import io
5+ import tempfile
66
77import pandas as pd
88from psycopg2 import sql
@@ -28,22 +28,20 @@ def add_metadata_to_csv(filename: str):
2828 logger .info (f"added metadata to { filename } ." )
2929
3030
31- def write_sql_to_csv (filename : str , sql_query : sql .SQL ):
31+ def write_sql_to_gzipped_csv (filename : str , sql_query : sql .SQL ):
3232 """
3333 Use the copy statement to write data from postgres to a csv file.
3434 """
3535
36- temp_file = "temp.csv"
36+ # generate temporary file which will be automatically deleted at the end
37+ tmp_csv_file = os .path .join (tempfile ._get_default_tempdir (), 'tmp.csv' )
3738 pg_db = auth .postgresDB ()
38- with open (temp_file , "w" ) as f :
39+ with open (tmp_csv_file , "w" ) as f :
3940 pg_db .copy_expert (sql_query , f )
4041
41- with open (temp_file , 'rb' ) as f_in , gzip .open (filename , 'wb' ) as f_out :
42+ with open (tmp_csv_file , 'rb' ) as f_in , gzip .open (filename , 'wb' ) as f_out :
4243 f_out .writelines (f_in )
4344
44- # remove temp file
45- os .remove (temp_file )
46-
4745 logger .info (f"wrote gzipped csv file from sql: { filename } " )
4846
4947
@@ -87,7 +85,7 @@ def get_results(filename: str, project_id: str) -> pd.DataFrame:
8785 ) TO STDOUT WITH CSV HEADER
8886 """
8987 ).format (sql .Literal (project_id ))
90- write_sql_to_csv (filename , sql_query )
88+ write_sql_to_gzipped_csv (filename , sql_query )
9189
9290 df = load_df_from_csv (filename )
9391
@@ -131,7 +129,7 @@ def get_tasks(filename: str, project_id: str) -> pd.DataFrame:
131129 ) TO STDOUT WITH CSV HEADER
132130 """
133131 ).format (sql .Literal (project_id ))
134- write_sql_to_csv (filename , sql_query )
132+ write_sql_to_gzipped_csv (filename , sql_query )
135133
136134 df = load_df_from_csv (filename )
137135 return df
@@ -166,7 +164,7 @@ def get_groups(filename: str, project_id: str) -> pd.DataFrame:
166164 ) TO STDOUT WITH CSV HEADER
167165 """
168166 ).format (sql .Literal (project_id ))
169- write_sql_to_csv (filename , sql_query )
167+ write_sql_to_gzipped_csv (filename , sql_query )
170168
171169 df = load_df_from_csv (filename )
172170 return df
0 commit comments