2024-06-21 19:58:42 +00:00
|
|
|
from loguru import logger
|
2024-03-29 17:17:51 +00:00
|
|
|
import os
|
|
|
|
|
2024-04-08 19:13:18 +00:00
|
|
|
import mariadb
|
2023-06-19 14:20:17 +00:00
|
|
|
|
2023-07-02 12:20:16 +00:00
|
|
|
|
2024-04-08 19:13:18 +00:00
|
|
|
def create_connection_pool(name: str, size: int) -> mariadb.ConnectionPool:
|
|
|
|
pool = mariadb.ConnectionPool(
|
|
|
|
host="db",
|
|
|
|
port=3306,
|
2024-04-13 15:38:01 +00:00
|
|
|
database=os.environ.get("MARIADB_DATABASE"),
|
|
|
|
user=os.environ.get("MARIADB_USER"),
|
|
|
|
password=os.environ.get("MARIADB_PASSWORD"),
|
2024-04-08 19:13:18 +00:00
|
|
|
pool_name=name,
|
|
|
|
pool_size=size
|
|
|
|
)
|
|
|
|
|
|
|
|
return pool
|
|
|
|
|
2024-04-13 15:38:01 +00:00
|
|
|
|
2024-04-08 19:13:18 +00:00
|
|
|
try:
|
|
|
|
_cnxpool = create_connection_pool("core-pool", 25)
|
|
|
|
except mariadb.Error as e:
|
2024-06-21 19:58:42 +00:00
|
|
|
logger.critical(f"Couldn't create the MariaDB connection pool: {e}")
|
2024-04-08 19:13:18 +00:00
|
|
|
raise e
|
2023-06-19 14:20:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
def execute_query(query, values=None):
|
2024-04-08 19:13:18 +00:00
|
|
|
conn = _cnxpool.get_connection()
|
2023-06-19 14:20:17 +00:00
|
|
|
cursor = conn.cursor()
|
|
|
|
|
2023-06-21 13:43:11 +00:00
|
|
|
if values:
|
|
|
|
cursor.execute(query, values)
|
|
|
|
else:
|
|
|
|
cursor.execute(query)
|
2023-06-19 14:20:17 +00:00
|
|
|
|
2023-06-21 13:43:11 +00:00
|
|
|
conn.commit()
|
2023-10-23 12:49:46 +00:00
|
|
|
conn.close()
|
2023-06-19 14:20:17 +00:00
|
|
|
return cursor
|
|
|
|
|
|
|
|
|
|
|
|
def select_query(query, values=None):
|
2024-04-08 19:13:18 +00:00
|
|
|
conn = _cnxpool.get_connection()
|
2023-06-19 14:20:17 +00:00
|
|
|
cursor = conn.cursor()
|
|
|
|
|
2023-06-21 13:43:11 +00:00
|
|
|
if values:
|
2023-10-23 12:49:46 +00:00
|
|
|
cursor.execute(query, values)
|
|
|
|
output = cursor.fetchall()
|
2023-06-21 13:43:11 +00:00
|
|
|
else:
|
2023-10-23 12:49:46 +00:00
|
|
|
cursor.execute(query)
|
|
|
|
output = cursor.fetchall()
|
|
|
|
|
|
|
|
conn.close()
|
|
|
|
return output
|
2023-06-19 14:20:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
def select_query_one(query, values=None):
|
2024-04-08 19:13:18 +00:00
|
|
|
conn = _cnxpool.get_connection()
|
2023-06-19 14:20:17 +00:00
|
|
|
cursor = conn.cursor()
|
|
|
|
|
2023-06-21 13:43:11 +00:00
|
|
|
if values:
|
2023-10-23 12:49:46 +00:00
|
|
|
cursor.execute(query, values)
|
|
|
|
output = cursor.fetchone()
|
2023-06-21 13:43:11 +00:00
|
|
|
else:
|
2023-10-23 12:49:46 +00:00
|
|
|
cursor.execute(query)
|
|
|
|
output = cursor.fetchone()
|
|
|
|
|
|
|
|
conn.close()
|
2023-06-19 14:20:17 +00:00
|
|
|
|
2023-06-21 13:43:11 +00:00
|
|
|
if output:
|
|
|
|
return output[0]
|
2023-06-19 14:20:17 +00:00
|
|
|
|
2023-06-21 13:43:11 +00:00
|
|
|
return None
|