Quiero realizar una prueba de un script para conectar a un servidor MySQL externo.
Desde mi máquina puedo conectar con el servidor externo, por lo que no está capado en el servidor externo las conexiones.
Desde Windows puedo crear una DSN de conexión y es correcta.
En Python he añadido pyodbc para poder hacer conexiones contra distintos motores SQL, funciona correctamente por ejemplo contra MS SQL Server local de pruebas. No contra el MySQL externo que quiero.
He descargado e instalado ODBC de MySQL.
He probado el siguiente código en Python para realizar la conexión mediante DSN:
(Mediante Windows DSN catPrueba conecta sin problema desde la interfaz)import pyodbc
cnxn = pyodbc.connect("DSN=catPrueba")
cursor = cnxn.cursor()
cursor.execute("select * from tblMuestra")
row = cursor.fetchall()
He probado a realizar la conexión sin DSN desde Python:
import pyodbc
import dbcat
row = cursor.fetchall()
conexion = dbcat.GetConnectionString()
conn = pyodbc.connect(conexion)
cursor = conn.cursor()
En dbcat.py tengo los datos de conexión:
def GetConnectionString():
driver = "{MySQL ODBC 8.0 Unicode Driver}"
#driver = "{MySQL ODBC 8.0 ANSI Driver}"
server = "mi_servidor"
database = "mi_base_de_datos"
username = "mi_usuario"
password = "mi_contrasenya"
connectionString = "DRIVER=" + driver + ";SERVER=" + server + ";DATABASE=" + database + ";UID=" + username + ";PWD=" + password
return connectionString
De todas las maneras obtengo el mismo mensaje de error:
pyodbc.InterfaceError:('IM003' , '[IM003]' No se puede cargar el controlador especificado debido al error de sistema 127: No sé encontró el proceso especificado. (MySQL ODBC 8.0 Unicode Driver, C:\\Program Files\\Connector ODBC 8.0\myodbc8w.dll). (160) (SQLDriverConnect)')
Miro por si acaso en la ruta si existe myodbc8w.dll y es correcto, existe. Según desde dónde puedo usar el controlador, pero desde Python no es capaz.
Python y el controlador ODBC ambos están en 32 bits.
No sé cúal es la razón de
no poder cargar el controlador