Una pequeña comparativa del sistema de IA DeepSeek y el sistema ChatGPT para generar código Python de obtención de datos de un equipo y guardado en base de datos MySQL. Hacemos una petición inicial y una petición de modificación del código. Mostramos los resultados de la compilación real de los códigos Python generados por ambos sistemas de IA.
- Preparación del entorno, prompt con petición y modificación del código generado.
- Resultado de la IA de DeepSeek en la petición inicial.
- Resultado de la IA de ChatGPT en la petición inicial.
- Resultado de la IA de DeepSeek en la petición de modificación de código.
- Resultado de la IA de ChatGPT en la petición de modificación de código.
- Compilando el código Python generado por DeepSeek y ChatGPT.
- Compilación del código Python generado por DeepSeek en la primera petición.
- Compilación del código Python generado por ChatGPT en la primera petición.
- Compilación del código Python generado por DeepSeek en la modificación de código.
- Compilación del código Python generado por ChatGPT en la modificación de código.
- Conclusiones finales de la comparativa DeepSeek vs ChatGPT en la generación de código Python.
Preparación del entorno, prompt con petición y modificación del código generado
Para preparar el entorno, abrimos una sesión de chat en DeepSeek y en ChatGPT, en las mismas condiciones, con una cuenta gratuita.
Realizamos la misma petición en el prompt de ambos sistemas de IA:
genérame el código fuente en python para obtener los datos básicos de un equipp (hostname, IP, uso de ram) y los guarde en una base de datos MySQL
Además, añadimos un error ortográfico a propósito, introduciendo equipp en lugar de equipo.
Se le hace una petición de modificación del código Python para que compruebe si el equipo existe en la BD por el hostname, si existe que lo actualice, con este prompt:
ok, el código está bien pero, por favor, modifícalo para que compruebe si el equipo existe en la base de datos antes de insertarlo. Si existe (buscando por hostname), que haga un update para actualizarlo
Resultado de la IA de DeepSeek en la petición inicial
El código Python que nos ofrece DeepSeek es:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
import socket import psutil import mysql.connector from mysql.connector import Error def get_system_info(): # Obtener el hostname hostname = socket.gethostname() # Obtener la dirección IP ip_address = socket.gethostbyname(hostname) # Obtener el uso de RAM ram_usage = psutil.virtual_memory().percent return hostname, ip_address, ram_usage def save_to_database(hostname, ip_address, ram_usage): try: # Conectar a la base de datos MySQL connection = mysql.connector.connect( host='localhost', # Cambia esto si tu base de datos está en otro servidor database='system_info', # Nombre de la base de datos user='root', # Cambia esto por tu usuario de MySQL password='password' # Cambia esto por tu contraseña de MySQL ) if connection.is_connected(): cursor = connection.cursor() # Crear la tabla si no existe create_table_query = """ CREATE TABLE IF NOT EXISTS system_data ( id INT AUTO_INCREMENT PRIMARY KEY, hostname VARCHAR(255) NOT NULL, ip_address VARCHAR(15) NOT NULL, ram_usage FLOAT NOT NULL, timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) """ cursor.execute(create_table_query) # Insertar los datos en la tabla insert_query = """ INSERT INTO system_data (hostname, ip_address, ram_usage) VALUES (%s, %s, %s) """ record = (hostname, ip_address, ram_usage) cursor.execute(insert_query, record) connection.commit() print("Datos guardados correctamente en la base de datos.") except Error as e: print(f"Error al conectar a MySQL: {e}") finally: if connection.is_connected(): cursor.close() connection.close() print("Conexión a MySQL cerrada.") def main(): # Obtener la información del sistema hostname, ip_address, ram_usage = get_system_info() # Mostrar la información en la consola print(f"Hostname: {hostname}") print(f"IP Address: {ip_address}") print(f"RAM Usage: {ram_usage}%") # Guardar la información en la base de datos save_to_database(hostname, ip_address, ram_usage) if __name__ == "__main__": main() |

La explicación que DeepSeek aporta, además del código fuente Python:
Explicación del código:
- get_system_info(): Esta función obtiene el hostname, la dirección IP y el uso de RAM del sistema.
socket.gethostname()
obtiene el nombre del host.socket.gethostbyname(hostname)
obtiene la dirección IP asociada al hostname.psutil.virtual_memory().percent
obtiene el porcentaje de uso de la RAM.
- save_to_database(): Esta función se conecta a la base de datos MySQL y guarda la información obtenida.
- Se conecta a la base de datos utilizando
mysql.connector.connect()
. - Crea una tabla llamada
system_data
si no existe. - Inserta los datos del sistema en la tabla.
- Se conecta a la base de datos utilizando
- main(): Esta es la función principal que llama a las otras funciones para obtener la información del sistema y guardarla en la base de datos.
Configuración de la base de datos:
- Asegúrate de que la base de datos
system_info
exista en tu servidor MySQL. - Cambia los valores de
host
,user
, ypassword
en la funciónsave_to_database()
para que coincidan con tu configuración de MySQL.
Ejecución:
- Ejecuta el script en tu entorno Python. Los datos del sistema se mostrarán en la consola y se guardarán en la base de datos MySQL.
Este código es un ejemplo básico y puede ser extendido o modificado según tus necesidades, como agregar más métricas del sistema o manejar errores de manera más robusta.
Resultado de la IA de ChatGPT en la petición inicial
El código Python que nos ofrece ChatGPT es:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import socket import psutil import mysql.connector from mysql.connector import Error def obtener_datos_equipo(): hostname = socket.gethostname() ip_address = socket.gethostbyname(hostname) ram_usage = psutil.virtual_memory().percent return hostname, ip_address, ram_usage def guardar_en_mysql(hostname, ip_address, ram_usage): try: conexion = mysql.connector.connect( host='localhost', user='tu_usuario', password='tu_contraseña', database='tu_base_de_datos' ) if conexion.is_connected(): cursor = conexion.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS datos_equipo ( id INT AUTO_INCREMENT PRIMARY KEY, hostname VARCHAR(255), ip_address VARCHAR(45), ram_usage FLOAT, timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) "" ) consulta = "INSERT INTO datos_equipo (hostname, ip_address, ram_usage) VALUES (%s, %s, %s)" valores = (hostname, ip_address, ram_usage) cursor.execute(consulta, valores) conexion.commit() print("Datos guardados correctamente.") except Error as e: print(f"Error al conectar con MySQL: {e}") finally: if conexion.is_connected(): cursor.close() conexion.close() if __name__ == "__main__": datos = obtener_datos_equipo() guardar_en_mysql(*datos) |

La explicación que ChatGPT aporta, además del código fuente Python:
Aquí tienes un script en Python que obtiene el hostname, la dirección IP y el uso de RAM del equipo, y guarda estos datos en una base de datos MySQL.
Obtener Datos Equipo
Asegúrate de cambiar 'tu_usuario'
, 'tu_contraseña'
y 'tu_base_de_datos'
por los valores correspondientes a tu configuración de MySQL. También debes asegurarte de que MySQL está instalado y configurado correctamente. ¿Necesitas ayuda con algo más?
Resultado de la IA de DeepSeek en la petición de modificación de código
El resultado que proporciona DeepSeek para la petición de modificación del código Python es:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
import socket import psutil import mysql.connector from mysql.connector import Error def get_system_info(): # Obtener el hostname hostname = socket.gethostname() # Obtener la dirección IP ip_address = socket.gethostbyname(hostname) # Obtener el uso de RAM ram_usage = psutil.virtual_memory().percent return hostname, ip_address, ram_usage def save_to_database(hostname, ip_address, ram_usage): try: # Conectar a la base de datos MySQL connection = mysql.connector.connect( host='localhost', # Cambia esto si tu base de datos está en otro servidor database='system_info', # Nombre de la base de datos user='root', # Cambia esto por tu usuario de MySQL password='password' # Cambia esto por tu contraseña de MySQL ) if connection.is_connected(): cursor = connection.cursor() # Crear la tabla si no existe create_table_query = """ CREATE TABLE IF NOT EXISTS system_data ( id INT AUTO_INCREMENT PRIMARY KEY, hostname VARCHAR(255) NOT NULL UNIQUE, ip_address VARCHAR(15) NOT NULL, ram_usage FLOAT NOT NULL, timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) """ cursor.execute(create_table_query) # Verificar si el equipo ya existe en la base de datos check_query = """ SELECT id FROM system_data WHERE hostname = %s """ cursor.execute(check_query, (hostname,)) result = cursor.fetchone() if result: # Si el equipo existe, actualizar los datos update_query = """ UPDATE system_data SET ip_address = %s, ram_usage = %s, timestamp = CURRENT_TIMESTAMP WHERE hostname = %s """ cursor.execute(update_query, (ip_address, ram_usage, hostname)) print("Datos actualizados correctamente en la base de datos.") else: # Si el equipo no existe, insertar un nuevo registro insert_query = """ INSERT INTO system_data (hostname, ip_address, ram_usage) VALUES (%s, %s, %s) """ cursor.execute(insert_query, (hostname, ip_address, ram_usage)) print("Datos insertados correctamente en la base de datos.") connection.commit() except Error as e: print(f"Error al conectar a MySQL: {e}") finally: if connection.is_connected(): cursor.close() connection.close() print("Conexión a MySQL cerrada.") def main(): # Obtener la información del sistema hostname, ip_address, ram_usage = get_system_info() # Mostrar la información en la consola print(f"Hostname: {hostname}") print(f"IP Address: {ip_address}") print(f"RAM Usage: {ram_usage}%") # Guardar o actualizar la información en la base de datos save_to_database(hostname, ip_address, ram_usage) if __name__ == "__main__": main() |
La explicación que DeepSeek aporta, además del código fuente Python, en la petición de modificación:
Cambios realizados:
- Verificación de existencia del equipo:
- Se agregó una consulta
SELECT
para verificar si elhostname
ya existe en la tablasystem_data
. - Si el
hostname
existe (result
no esNone
), se ejecuta una consultaUPDATE
para actualizar los camposip_address
,ram_usage
ytimestamp
. - Si el
hostname
no existe, se ejecuta una consultaINSERT
para agregar un nuevo registro.
- Se agregó una consulta
- Campo
hostname
único:- Se agregó la restricción
UNIQUE
al campohostname
en la definición de la tabla para evitar duplicados.
- Se agregó la restricción
- Actualización del
timestamp
:- En la consulta
UPDATE
, el campotimestamp
se actualiza automáticamente a la fecha y hora actuales.
- En la consulta
Ejemplo de uso:
- Si el equipo ya existe en la base de datos, se actualizarán sus datos (
ip_address
,ram_usage
ytimestamp
). - Si el equipo no existe, se insertará un nuevo registro.
Este enfoque garantiza que no haya duplicados en la base de datos y que los datos siempre estén actualizados.
Resultado de la IA de ChatGPT en la petición de modificación de código
El resultado que proporciona ChatGPT para la petición de modificación del código Python es:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
import socket import psutil import mysql.connector from mysql.connector import Error def obtener_datos_equipo(): hostname = socket.gethostname() ip_address = socket.gethostbyname(hostname) ram_usage = psutil.virtual_memory().percent return hostname, ip_address, ram_usage def guardar_en_mysql(hostname, ip_address, ram_usage): try: conexion = mysql.connector.connect( host='localhost', user='tu_usuario', password='tu_contraseña', database='tu_base_de_datos' ) if conexion.is_connected(): cursor = conexion.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS datos_equipo ( id INT AUTO_INCREMENT PRIMARY KEY, hostname VARCHAR(255) UNIQUE, ip_address VARCHAR(45), ram_usage FLOAT, timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) "" ) cursor.execute("SELECT hostname FROM datos_equipo WHERE hostname = %s", (hostname,)) resultado = cursor.fetchone() if resultado: consulta = """ UPDATE datos_equipo SET ip_address = %s, ram_usage = %s WHERE hostname = %s """ valores = (ip_address, ram_usage, hostname) else: consulta = "INSERT INTO datos_equipo (hostname, ip_address, ram_usage) VALUES (%s, %s, %s)" valores = (hostname, ip_address, ram_usage) cursor.execute(consulta, valores) conexion.commit() print("Datos guardados/actualizados correctamente.") except Error as e: print(f"Error al conectar con MySQL: {e}") finally: if conexion.is_connected(): cursor.close() conexion.close() if __name__ == "__main__": datos = obtener_datos_equipo() guardar_en_mysql(*datos) |
La explicación que ChatGPT aporta, además del código fuente Python, en la petición de modificación:
Editado
He modificado el código para que primero compruebe si el equipo ya existe en la base de datos (buscando por hostname). Si existe, actualizará sus datos en lugar de insertar un nuevo registro. Déjame saber si necesitas más ajustes.
Compilando el código Python generado por DeepSeek y ChatGPT
Para ejecutar el código generado por ambas IA, en real, hemos creado una BD en un servidor MySQL, añadiendo la tabla con la propia consulta de creación que indica cada IA, separadas, para usar cada una con su correspondiente IA.
Ejecutamos las siguientes consultas SQL (copiadas de la generación de las IA), únicamente modificamos el nombre de las tablas, para dejar una tabla para la IA de DeepSeek (ia_deepseek) y otra para la IA de ChatGPT (ia_chatgpt):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
CREATE TABLE IF NOT EXISTS ia.ia_deepseek ( id INT AUTO_INCREMENT PRIMARY KEY, hostname VARCHAR(255) NOT NULL, ip_address VARCHAR(15) NOT NULL, ram_usage FLOAT NOT NULL, timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS ia.ia_chatgpt ( id INT AUTO_INCREMENT PRIMARY KEY, hostname VARCHAR(255) UNIQUE, ip_address VARCHAR(45), ram_usage FLOAT, timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); |
Realizamos la instalación de las librerías Python tal y como indica la IA DeepSeek en sus explicaciones, la de ChatGPT no lo hace:
1 |
pip install psutil mysql-connector-python |
Realizamos una pequeña modificación en el código generado por las dos IA, tal y como lo indican en sus explicaciones. Únicamente cambiamos los datos de conexión al servidor de MySQL, para que se establezca la conexión real (IP, usuario, contraseña) y el nombre de las tablas en el código Python.
Compilación del código Python generado por DeepSeek en la primera petición
Al intentar compilar el código generado por DeepSeek, muestra un error y no compila. Para poder compilarlo únicamente tenemos que modificar (comentar) las líneas del finally de la captura de error try… except … finally.

Con ese pequeño cambio compila y funciona perfectamente, obteniendo la IP, el nombre de red (hostname) y la memoria RAM usada. Muestra los datos por consola (esto no se lo pedimos):

Y los guarda en un registro de la tabla de la BD MySQL:

Por lo tanto, con esa pequeña modificación del código, ha funcionado perfectamente.
Compilación del código Python generado por ChatGPT en la primera petición
En el caso del ChatGPT, el código muestra un error de sintaxis desde el principio:

Realizamos una modificación en el código para solucionar el error de sintaxis. Solo hay que arreglar la finalización del comentario «»», que incluye «» en lugar de «»». Una vez hecha esta modificación, ejecutamos el código y funciona correctamente, insertando el registro correspondiente en la tabla del servidor de MySQL, con los datos (hostname, IP, RAM usada) correctos.

Compilación del código Python generado por DeepSeek en la modificación de código
Para el caso de la petición de modificación de código, donde pedimos a la IA DeepSeek que modifique el código Python para que permita buscar si ya existe el equipo en la tabla, si existe que lo actualice, si no existe que lo inserte. En el caso de DeepSeek, sin realizar ninguna modificación en el código (salvo las necesarias del nombre de la tabla y los datos de conexión), el resultado es correcto. Compila y realiza las tareas de inserción o actualización correctamente.
Incluso para realizar las pruebas de forma más eficiente, se ha ejecutado el código Python proporcionado por DeekSeep en un equipo Windows y en un equipo Linux.

Y se ha ejecutado varias veces para verificar que no duplica registros. El resultado ha sido correcto:

Compilación del código Python generado por ChatGPT en la modificación de código
Para el caso de la petición de modificación de código, donde pedimos a la IA ChatGPT que modifique el código Python para que permita buscar si ya existe el equipo en la tabla, si existe que lo actualice, si no existe que lo inserte. En el caso de ChatGPT, tenemos que realizar la modificación del código anterior, añadiendo una comilla doble al comentario para que compile.
Tras realizar esta modificación, el resultado es correcto. Compila y realiza las tareas de inserción o actualización correctamente. Realizamos las mismas pruebas que en el caso de DeepSeek, ejecutándolo en Linux y Windows varias veces, el resultado sigue siendo correcto:

Conclusiones finales de la comparativa DeepSeek vs ChatGPT en la generación de código Python
Analizando las explicaciones del código generado, sin duda, DeepSeek proporciona una explicación más detallada y de mejor calidad, comentando las líneas de código más importantes y dando una explicación más detallada del resultado. Tanto en la petición inicial como en la petición de modificación.
Analizando en profundidad el código Python, ambos son similares, con la misma estructuración, creando dos métodos, uno para obtener los datos del equipo y otro para realizar la conexión con la BD y la inserción del registro. Ambos han incluido una captura de errores básica.
Ambos sistemas de IA han generado prácticamente el mismo código, con pequeñas diferencias que no han afectado al resultado final.
Ninguno de los dos ha generado un código perfecto, ChatGPT ha generado un código con más errores de sintaxis, no ha sido capaz de acabar las líneas comentadas y hemos tenido que modificarlo para poder compilarlo.
Por todo ello, el mejor resultado lo ha proporcionado DeepSeek.