aboutsummaryrefslogtreecommitdiff
path: root/gn_auth/auth/db/mariadb.py
diff options
context:
space:
mode:
Diffstat (limited to 'gn_auth/auth/db/mariadb.py')
-rw-r--r--gn_auth/auth/db/mariadb.py26
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()