database_operations.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import psycopg2
  2. from psycopg2.extras import DictCursor
  3. def connect_to_database(dbname="sgi", user="postgres", password="h3rcul3s#$", host="200.13.89.8", port="5432"):
  4. """
  5. Establece una conexión a la base de datos y la retorna.
  6. """
  7. try:
  8. connection = psycopg2.connect(
  9. dbname=dbname,
  10. user=user,
  11. password=password,
  12. host=host,
  13. port=port
  14. )
  15. return connection
  16. except psycopg2.Error as e:
  17. print(f"No se pudo conectar a la base de datos: {e}")
  18. exit()
  19. def query_all(sql):
  20. with connect_to_database() as conn:
  21. with conn.cursor(cursor_factory=DictCursor) as cur:
  22. cur.execute(sql)
  23. return cur.fetchall()
  24. def query_single(sql):
  25. with connect_to_database() as conn:
  26. with conn.cursor(cursor_factory=DictCursor) as cur:
  27. cur.execute(sql)
  28. return cur.fetchone() # Returns a dictionary-like object
  29. def execute_query(sql):
  30. with connect_to_database() as conn:
  31. with conn.cursor() as cur:
  32. cur.execute(sql)
  33. conn.commit() # Commit to save the insert operation
  34. def log(message, status, error_message=None, clave=None, no_insertadas=[]):
  35. with connect_to_database(dbname="adcfi", user="postgres", password="Ultr4p0d3r0s0##", host="200.13.89.42", port="5432") as conn:
  36. with conn.cursor() as cur:
  37. cur.execute(f"""
  38. INSERT INTO calificaciones.calificaciones_log (response_status, error_message, user_ip, additional_info)
  39. VALUES ({status}, {f"'{error_message}'" if error_message else 'NULL'}, '200.13.89.42', '{{"clave": "{clave}", "message": "{message}", "no insertadas": "[{', '.join(no_insertada for no_insertada in no_insertadas)}]"}}')
  40. """)
  41. conn.commit()