From fa8568af2bbe3730fa661520d2f059598ba9ff32 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Thu, 8 Feb 2024 21:36:57 +0100 Subject: [PATCH] export.py: Extract export function --- wgmaster/export.py | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/wgmaster/export.py b/wgmaster/export.py index 07dd024..2af20e3 100644 --- a/wgmaster/export.py +++ b/wgmaster/export.py @@ -48,9 +48,9 @@ def get_accdb_info(filename: str) -> Tuple[str, datetime.datetime, datetime.date stat = os.stat(filename) with open(filename, 'rb', buffering=0) as f: filehash = hashlib.file_digest(f, 'md5').hexdigest() - return filehash,\ - datetime.datetime.fromtimestamp(stat.st_ctime),\ - datetime.datetime.fromtimestamp(stat.st_mtime),\ + return filehash, \ + datetime.datetime.fromtimestamp(stat.st_ctime), \ + datetime.datetime.fromtimestamp(stat.st_mtime), \ stat.st_size @@ -103,23 +103,13 @@ def prompt() -> str: return file_map[choice]['locations'][0] -def main() -> None: - parser = argparse.ArgumentParser() - parser.add_argument('-o', '--output', default='tables') - parser.add_argument('-f', '--file', metavar='WGDATEN', required=False) - args = parser.parse_args() - - os.makedirs(args.output, exist_ok=True) - - if not args.file: - args.file = prompt() - - print(f'Opening {args.file}...', flush=True) +def export(file: str, output: str) -> None: + print(f'Opening {file}...', flush=True) pypyodbc.lowercase = False - cnx = pypyodbc.connect(f"Driver={{Microsoft Access Driver (*.mdb, *.accdb)}};Dbq={args.file};") + cnx = pypyodbc.connect(f"Driver={{Microsoft Access Driver (*.mdb, *.accdb)}};Dbq={file};") cur = cnx.cursor() - print(f'Opened {args.file}!', flush=True) + print(f'Opened {file}!', flush=True) try: print(f'Fetching tables...', flush=True) @@ -138,7 +128,7 @@ def main() -> None: cur.execute(f"SELECT * FROM {t_name} ORDER BY `{desc[0][0]}`;") cols = [t[0] for t in cur.description] - with utils.csv_open(f'{args.output}/{t_name}.csv') as f: + with utils.csv_open(f'{output}/{t_name}.csv') as f: f.header(*cols) for row in cur: values = (utils.convert_value(val, table=t_name, column=col) for col, val in zip(cols, row)) @@ -150,5 +140,17 @@ def main() -> None: cnx.close() +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument('-o', '--output', default='tables') + parser.add_argument('-f', '--file', metavar='WGDATEN', required=False) + args = parser.parse_args() + + os.makedirs(args.output, exist_ok=True) + if not args.file: + args.file = prompt() + export(args.file, args.output) + + if __name__ == '__main__': main()