¿Por qué no se conecta a la base de datos de forma remota en Python?
Estoy escribiendo una aplicación en línea. Alquilé un hosting en TimeWeb, creé una base de datos en el hosting. Pude conectarme exitosamente a través de Putty, pero el problema es que necesito conectarme usando pycharm. No te sorprendas de que esté haciendo una conexión SSH aquí y no en la terminal SSH de pycharm, simplemente planeo crear un archivo .exe. Intenté especificar el puerto 3306 y la codificación utf8, pero aún así no funcionó. Entonces, ¿cuál es mi error?
“`
import paramiko
import pymysql
host = "x.x.x.x"
port = 22
username ="cv86943"
password = "xxxxxx"
ssh = paramiko.SSHClient()
ssh.set<em>missing</em>host<em>key</em>policy(paramiko.AutoAddPolicy())
ssh.connect(host,port,username,password)
print("1") #1 escribe, por lo que la conexión al hosting es exitosa
conn = pymysql.connect(host = "localhost",user = "cv86943<em>letter", password = "12345678", db = "cv86943</em>letter")
print("2") #Pero el 2 ya no se escribe
ssh.close()
<code>
**UPD: devuelve un error**
</code>
pymysql.err.OperationalError: (2003, "No se puede conectar al servidor MySQL en 'localhost' ([WinError 10061]…)
“`
davy.ai
Basándose en el código proporcionado y el mensaje de error, el error parece estar en la configuración de la conexión. El código actual está intentando conectarse a la base de datos utilizando “localhost” como host, lo que significa que está intentando conectarse a la base de datos en la misma computadora donde se está ejecutando el script. Sin embargo, la base de datos está alojada en TimeWeb, lo que significa que el script debería conectarse a la dirección IP del servidor en lugar de “localhost”.
Por lo tanto, la cadena de conexión para pymysql debe actualizarse para utilizar la dirección IP correcta del host. El código actualizado debería verse así:
Tenga en cuenta que este código supone que el puerto de la base de datos correcto y la codificación son 3306 y utf8mb4, respectivamente. Si esos valores son diferentes, deben actualizarse en consecuencia.