drogon/core/mysql_wrapper.py

77 lines
2.4 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
import sys
2020-11-03 07:29:17 +01:00
sys.path.append("..")
import mysql.connector
from core.alerts import alert_master
from core.config import current_db_parameters
2020-11-03 07:29:17 +01:00
anuncios_db_parameters = {"database": "anuncios", **current_db_parameters}
tasks_db_parameters = {"database": "tasks", **current_db_parameters}
2020-11-03 07:29:17 +01:00
class DatabaseWrapper:
def __init__(self, connection_parameters):
2020-11-03 07:29:17 +01:00
self.host = connection_parameters["host"]
self.database = connection_parameters["database"]
self.user = connection_parameters["user"]
self.password = connection_parameters["password"]
self.connection = None
2020-11-03 07:29:17 +01:00
self.ping()
2020-11-03 07:29:17 +01:00
def connect(self):
2020-11-03 07:29:17 +01:00
self.connection = mysql.connector.connect(
host=self.host,
database=self.database,
user=self.user,
password=self.password,
autocommit=False,
)
def disconnect(self):
if self.connection.is_connected():
self.connection.disconnect()
def ping(self):
self.connect()
self.disconnect()
2020-11-03 07:29:17 +01:00
def query(self, query_statement, query_parameters=None, dictionary=False):
self.connect()
if self.connection.is_connected():
try:
2020-11-03 07:29:17 +01:00
execution_cursor = self.connection.cursor(
dictionary=dictionary, buffered=True
)
execution_cursor.execute(query_statement, query_parameters)
2018-11-04 19:52:47 +01:00
self.connection.commit()
self.disconnect()
return execution_cursor
except Exception as e:
2020-11-03 07:29:17 +01:00
alert_master(
"SQL ERROR",
"""Se ha producido un error ejecutando la
siguiente query: {}.
Con los siguientes parametros: {}
{}
2020-11-03 07:29:17 +01:00
""".format(
query_statement, query_parameters, e
),
)
else:
raise Exception("Could not connect to the database.")
2020-11-03 07:29:17 +01:00
def query_dict(self, query_statement, query_parameters=None):
return self.query(query_statement, query_parameters, dictionary=True)
def get_anunciosdb():
2020-11-03 07:29:17 +01:00
return DatabaseWrapper(anuncios_db_parameters)
2018-11-02 19:21:52 +01:00
def get_tasksdb():
return DatabaseWrapper(tasks_db_parameters)