diff --git a/scripts/import-from-xon.py b/scripts/import-from-xon.py index b3bf87d..aff680b 100644 --- a/scripts/import-from-xon.py +++ b/scripts/import-from-xon.py @@ -3,7 +3,6 @@ import sqlite3 as sql import logging import logging.handlers -from os import listdir, mkdir from os.path import isfile, exists from urllib.parse import unquote @@ -48,8 +47,10 @@ def get_list_from_server_txt(filename): output.append(row) return output -def init_logging(): - filename = "_logs/dbimport-%s.log" +def init_logging(folder, base_file_name="dbimport-%s.log"): + if not exists(folder): + return False + filename = folder + "/" + base_file_name i = 0 while exists(filename % i): i += 1 @@ -163,6 +164,9 @@ def insert_to_database(d, s): con.rollback() def write_query(out_file, data): + if exists(out_file): + print("stopped: output file already exists", file=sys.stderr) + return False times, \ ranks, \ ids, \ @@ -175,7 +179,7 @@ def write_query(out_file, data): file_handle.write("INSERT OR REPLACE INTO Cts_ranks VALUES(\'%s\', \'%s\', %s, \'%s\');\n" % tuple(r)) for i in ids: file_handle.write("INSERT OR REPLACE INTO Id2alias VALUES(\'%s\', \'%s\', \'%s\');\n" % tuple(i)) - return + return True # Test whether repeat rows are added. def check_duplicates(database, data): @@ -225,19 +229,27 @@ if __name__ == "__main__": ap.add_argument('-t', '--test', action='store_true', help="test database for duplicates") - ap.add_argument('-q', '--query', + ap.add_argument('-q', '--export-query', action='store_true', help="write query file (as opposed to executing / inserting rows into database)") + ap.add_argument('-l', '--log', + type=str, + help="set folder to store log files") args = ap.parse_args() - log_file = init_logging() - print("Writing log to ", log_file) - if args.test: - check_duplicates(args.dest, args.src) - if args.query: - try: - write_query(args.dest, args.src) - except FileNotFoundError: - traceback.print_exc() - print("\n\t Exiting - no file to work with.", file=sys.stderr) + log_dir = args.log or "logs" + log_file = init_logging(log_dir) + if log_file: + print("writing log to folder '%s'," % log_dir, log_file, file=sys.stderr) else: - insert_to_database(args.dest, args.src) + print("exited: logging not initialized (folder '%s' does not exist)" % log_dir, file=sys.stderr) + exit() + try: + if args.test: + check_duplicates(args.dest, args.src) + if args.export_query: + write_query(args.dest, args.src) + else: + insert_to_database(args.dest, args.src) + except FileNotFoundError: + traceback.print_exc() + print("\n\t exited: no input file to work with.", file=sys.stderr)