2018-08-08 21:16:25 +02:00
|
|
|
# -*- coding: utf-8 -*-
|
2018-10-29 21:57:20 +01:00
|
|
|
import sys
|
2020-11-03 07:29:17 +01:00
|
|
|
|
|
|
|
|
sys.path.append("..")
|
2018-08-08 21:16:25 +02:00
|
|
|
import mysql.connector
|
2018-10-06 19:09:44 +02:00
|
|
|
from core.alerts import alert_master
|
2018-10-29 21:57:20 +01:00
|
|
|
from core.config import current_db_parameters
|
2018-08-08 21:16:25 +02:00
|
|
|
|
2020-11-03 07:29:17 +01:00
|
|
|
anuncios_db_parameters = {"database": "anuncios", **current_db_parameters}
|
|
|
|
|
tasks_db_parameters = {"database": "tasks", **current_db_parameters}
|
|
|
|
|
|
2018-08-08 21:16:25 +02:00
|
|
|
|
2020-11-03 07:29:17 +01:00
|
|
|
class DatabaseWrapper:
|
2018-08-08 21:16:25 +02:00
|
|
|
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"]
|
2018-08-08 21:16:25 +02:00
|
|
|
self.connection = None
|
2020-11-03 07:29:17 +01:00
|
|
|
|
2018-08-09 20:55:04 +02:00
|
|
|
self.ping()
|
2020-11-03 07:29:17 +01:00
|
|
|
|
2018-08-08 21:16:25 +02: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,
|
|
|
|
|
)
|
|
|
|
|
|
2018-08-08 21:16:25 +02:00
|
|
|
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
|
|
|
|
2018-10-06 19:09:44 +02:00
|
|
|
def query(self, query_statement, query_parameters=None, dictionary=False):
|
2018-08-08 21:16:25 +02:00
|
|
|
self.connect()
|
|
|
|
|
if self.connection.is_connected():
|
2018-10-06 19:09:44 +02:00
|
|
|
try:
|
2020-11-03 07:29:17 +01:00
|
|
|
execution_cursor = self.connection.cursor(
|
|
|
|
|
dictionary=dictionary, buffered=True
|
|
|
|
|
)
|
2018-10-06 19:09:44 +02:00
|
|
|
execution_cursor.execute(query_statement, query_parameters)
|
2018-11-04 19:52:47 +01:00
|
|
|
self.connection.commit()
|
2018-10-06 19:09:44 +02:00
|
|
|
self.disconnect()
|
|
|
|
|
return execution_cursor
|
2018-10-13 02:08:58 +02:00
|
|
|
except Exception as e:
|
2020-11-03 07:29:17 +01:00
|
|
|
alert_master(
|
|
|
|
|
"SQL ERROR",
|
|
|
|
|
"""Se ha producido un error ejecutando la
|
2018-10-13 02:08:58 +02:00
|
|
|
siguiente query: {}.
|
|
|
|
|
Con los siguientes parametros: {}
|
|
|
|
|
|
|
|
|
|
{}
|
2020-11-03 07:29:17 +01:00
|
|
|
""".format(
|
|
|
|
|
query_statement, query_parameters, e
|
|
|
|
|
),
|
|
|
|
|
)
|
2018-10-06 19:09:44 +02:00
|
|
|
|
2018-08-30 19:38:31 +02:00
|
|
|
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)
|
|
|
|
|
|
2018-08-09 20:55:04 +02:00
|
|
|
|
|
|
|
|
def get_anunciosdb():
|
2020-11-03 07:29:17 +01:00
|
|
|
return DatabaseWrapper(anuncios_db_parameters)
|
2018-08-09 20:55:04 +02:00
|
|
|
|
2018-11-02 19:21:52 +01:00
|
|
|
|
2018-08-30 19:38:31 +02:00
|
|
|
def get_tasksdb():
|
|
|
|
|
return DatabaseWrapper(tasks_db_parameters)
|