diff options
author | Frederick Muriuki Muriithi | 2024-10-29 14:12:01 -0500 |
---|---|---|
committer | Frederick Muriuki Muriithi | 2024-10-29 14:12:01 -0500 |
commit | bfbefb6594c0b063ce169aa5f14dc9bc341c97e9 (patch) | |
tree | 48b89adcf458f0534fdb292a834e7a178023d1ce /scripts/maintenance/QTL_Reaper_v6.py | |
parent | 37282ca8cdd10c82a4d84b3fb9a70777d0166914 (diff) | |
download | genenetwork2-bfbefb6594c0b063ce169aa5f14dc9bc341c97e9.tar.gz |
Read connection detail from file. Use contextmanager.
Read connection details from file to make it easier to change host(s)
in use.
Use contextmanager to manage the connections.
Diffstat (limited to 'scripts/maintenance/QTL_Reaper_v6.py')
-rwxr-xr-x | scripts/maintenance/QTL_Reaper_v6.py | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/scripts/maintenance/QTL_Reaper_v6.py b/scripts/maintenance/QTL_Reaper_v6.py index 3f202285..477af973 100755 --- a/scripts/maintenance/QTL_Reaper_v6.py +++ b/scripts/maintenance/QTL_Reaper_v6.py @@ -3,6 +3,7 @@ #!/usr/bin/python import reaper import MySQLdb +import contextlib from argparse import ArgumentParser @@ -100,7 +101,31 @@ def run_qtl_reaper(cursor, genotypeDir, ProbeSetFreezeIds): print(ProbeSetFreezeIds) - cursor.close() + +@contextlib.contextmanager +def dbconnection(db, user, passwd, host, port): + """Connect to the database in a contextmanager.""" + conn = MySQLdb.Connect(db=db, user=user, passwd=passwd, host=host, port=port) + try: + yield conn + except MySQLdb.Error as _err: + conn.rollback() + finally: + conn.commit() + conn.close() + + +def read_db_config(path): + with open(path, "r") as infile: + lines = tuple(line.strip() for line in infile.readlines()) + return { + "user": lines[0], + "passwd": lines[1], + "host": lines[2], + "port": int(lines[3] or "3306"), + "db": lines[4] + } + def main(): parser = ArgumentParser(prog="QTLReaper", description="Python-2 QTLReaper.") @@ -116,6 +141,8 @@ def main(): nargs="*", help="The ProbeSetFreezeIds to act on.") args = parser.parse_args() + with dbconnection(**read_db_config(args.db_config_file)) as conn: + run_qtl_reaper(conn.cursor(), args.genotype_dir, args.ProbeSetFreezeIds) if __name__ == "__main__": main() |