diff options
author | Frederick Muriuki Muriithi | 2023-08-07 07:47:01 +0300 |
---|---|---|
committer | Frederick Muriuki Muriithi | 2023-08-07 09:26:12 +0300 |
commit | 6ab6d46ab4b1611ed72bdbce85cf9324ce69b305 (patch) | |
tree | 3d10ba6514e594cf3add2086c6668c891b8cedae /gn_auth/auth/db/mariadb.py | |
parent | e5cf3178743260e5003f3a9becf025c154204ccd (diff) | |
download | gn-auth-6ab6d46ab4b1611ed72bdbce85cf9324ce69b305.tar.gz |
Collect db-connections function in single module.
Diffstat (limited to 'gn_auth/auth/db/mariadb.py')
-rw-r--r-- | gn_auth/auth/db/mariadb.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gn_auth/auth/db/mariadb.py b/gn_auth/auth/db/mariadb.py new file mode 100644 index 0000000..a934fd9 --- /dev/null +++ b/gn_auth/auth/db/mariadb.py @@ -0,0 +1,26 @@ +"""Connections to MariaDB""" +import traceback +import contextlib +from typing import Iterator + +import MySQLdb as mdb + +from .protocols import DbConnection + +@contextlib.contextmanager +def database_connection(sql_uri) -> Iterator[DbConnection]: + """Connect to MySQL database.""" + host, user, passwd, db_name, port = parse_db_url(sql_uri) + connection = mdb.connect(db=db_name, + user=user, + passwd=passwd or '', + host=host, + port=port or 3306) + try: + yield connection + except Exception as _exc: # TODO: Make the Exception class less general + logging.debug(traceback.format_exc()) + connection.rollback() + finally: + connection.commit() + connection.close() |