1
Fork 0
mirror of https://github.com/wlinator/luminara.git synced 2024-10-03 02:23:13 +00:00
Lumi/db/database.py

76 lines
1.5 KiB
Python
Raw Normal View History

2023-07-02 12:20:16 +00:00
import logging
2024-03-29 17:17:51 +00:00
import os
import mariadb
2023-10-23 12:49:46 +00:00
from dotenv import load_dotenv
2023-06-19 14:20:17 +00:00
_logs = logging.getLogger('Racu.Core')
2023-10-23 12:49:46 +00:00
load_dotenv('.env')
2023-07-02 12:20:16 +00:00
def create_connection_pool(name: str, size: int) -> mariadb.ConnectionPool:
pool = mariadb.ConnectionPool(
host="db",
port=3306,
database="racudb",
user=os.getenv("MARIADB_USER"),
password=os.getenv("MARIADB_PASSWORD"),
pool_name=name,
pool_size=size
)
return pool
try:
_cnxpool = create_connection_pool("core-pool", 25)
except mariadb.Error as e:
_logs.critical(f"[CRITICAL] Couldn't create MariaDB connection pool: {e}")
raise e
2023-06-19 14:20:17 +00:00
def execute_query(query, values=None):
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):
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):
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