Cómo acceder a un servidor de base de datos Microsoft SQL Server (u otro) mediante ODBC y el lenguaje de programación Python. El procedimiento explicado servirá para cualquier otro motor de base de datos que admita driver ODBC (MySQL, MariaDB, Oracle, PostgreSQL, SQLite, etc.). Realizamos la conexión tanto usando un origen de datos existente en el equipo como sin origen de datos.

Requisitos para acceso a servidor de base de datos SQL Server mediante ODBC y Python

Servidor de base de datos Microsoft SQL Server

Necesitaremos disponer de un servidor de base de datos SQL Server. En el siguiente enlace mostramos cómo desplegar un servidor de base de datos SQL Server en segundos con Docker:

En este otro tutorial explicamos cómo instalar SQL Server en Windows Server 2022:

Instalar driver ODBC del motor de base de datos SQL Server u otro

En primer lugar, en el equipo desde el que vayamos a conectarnos al servidor de base de datos, necesitaremos instalar el driver ODBC correspondiente al motor de base de datos del servidor (Oracle, MySQL, MariaDB, PostgreSQL, SQLite, etc.). Para el ejemplo, conectaremos con un servidor SQL Server, por lo que descargaremos el driver ODBC correspondiente desde su web oficial, desde:

Instalaremos el driver ODBC siguiendo los pasos del asistente de instalación, o bien de forma silenciosa, que para el caso del driver ODBC de SQL Server, se puede instalar sin intervención del usuario, accediendo a la carpeta donde hayamos descargado el fichero de instalación msodbcsql.msi, ejecutando el comando:

Agregar origen de datos SQL Server u otro

En principio, pyodbc no necesita que agreguemos un origen de datos en el equipo. Permite crear una string de conexión ODBC directamente. En este tutorial mostramos las dos opciones de pyodbc:

  • Conexión usando un origen de datos existente.
  • Conexión sin usar origen de datos existente, definiendo todos los datos de la conexión en el propio código Python de la aplicación.

Por ello, si optamos por conectarnos usando un origen de datos existente, deberemos crearlo como indicamos a continuación.

Una vez instalado el driver ODBC, crearemos el origen de datos en el equipo donde vayamos a realizar la conexión con el servidor de BD. Para ello, desde el menú Inicio, escribiremos «ODBC». Nos mostrará «Orígenes de datos ODBC (64 bits)». Pulsaremos sobre este acceso directo. En caso de haber descargado el driver ODBC de 32 bits, elegiremos el acceso directo propiamente dicho.

Si queremos que el origen de datos esté disponible para todos los usuarios del equipo, deberemos abrir el acceso anterior en modo administrador, pulsando en «Ejecutar como administrador». De lo contrario, nos mostrará este mensaje al intentar acceder a la pestaña de «DSN de sistema»:

Usaremos la pestaña «DSN de usuario» para que el origen de datos sólo esté disponible para el usuario actual que ha iniciado sesión en Windows o bien «DSN de sistema» para que el origen de datos esté disponible para todos los usuarios del equipo. Pulsaremos en «Agregar» para agregar un nuevo origen de datos:

Elegiremos el driver del motor de base de datos al que queramos conectarnos. En este caso, elegiremos «SQL Server»:

Indicaremos el nombre para el origen de datos, por ejemplo «mssql» y la IP o nombre DNS del servidor con SQL Server. Pulsaremos en «Siguiente» para personalizar los parámetros de conexión o bien en «Finalizar» para establecer los de defecto. En este caso pulsaremos en «Siguiente»:

Marcaremos el tipo de inicio de sesión, o bien con autenticación de Windows o bien con autenticación de SQL Server, según hayamos configurado el servidor de SQL Server. En este caso marcaremos «Con la autenticación de SQL Server…». Especificaremos un usuario y contraseña de SQL Server para probar la conexión ODBC:

Si conocemos la base de datos a conectar la elegiremos del desplegable marcando «Establecer la siguiente base de datos como predeterminada»:

Desde aquí podremos realizar una conexión de prueba, para verificar que tenemos acceso al servidor de SQL Server, pulsando en «Probar origen de datos…»:

Si la conexión es correcta nos lo indicará con el mensaje:

PRUEBAS COMPLETADAS CORRECTAMENTE

En caso de producirse algún error, también nos lo indicará.

De esta forma ya tendríamos configurado el origen de datos ODBC, llamado «mssql», que será el que utilicemos a continuación en Python para la conexión.

Instalar librería pyodbc para Python

Para el caso del acceso ODBC a servidores de base de datos mediante Python, usaremos el paquete pyodbc. Por ello, deberemos instalarlo con el comando:

Código fuente Python de aplicación que conecta con un servidor de SQL Server mediante ODBC y origen de datos existente

Si optamos por la conexión ODBC usando un origen de datos previamente creado en el equipo (como indicamos en esta sección), deberemos conocer el nombre del origen de datos, en nuestro caso «mssql».

El código fuente de la aplicación Python que accede a un motor de base de datos mediante SQL y un origen de datos existente sería:

En el caso anterior podemos observar que sólo indicamos como datos de conexión el usuario, la contraseña y el nombre del origen de datos, nada más. Esto es así porque el resto de parámetros de conexión vienen definidos por el usuario en la creación del origen de datos.

La ejecución de la aplicación Python anterior devolverá el nombre de la base de datos a la que estamos conectados (en este caso «master») y todos los ficheros que componen la base de datos SQL Server (su ID, su nombre y su ruta):

Código fuente Python de aplicación que conecta con un servidor de SQL Server mediante ODBC y string de conexión

Si optamos por la conexión ODBC sin usar un origen de datos existente, deberemos conocer el nombre del Driver ODBC a usar, que suele venir indicado cuando pulsamos en «Agregar» en un nuevo origen de datos (sin necesidad de tener que agregarlo, sólo para consultar el nombre exacto del driver). En este caso, el nombre del driver ODBC es «SQL Server»:

El código fuente de la aplicación Python que accede a un motor de base de datos mediante SQL, sin un origen de datos existente, será:

En este caso sí que tenemos que indicar los siguientes datos:

  • Servidor de BD: dirección IP o nombre DNS del servidor con el motor de base de datos SQL Server (u otro).
  • Base de datos: nombre de la base de datos a la que nos conectaremos.
  • Usuario: usuario del servidor de base de datos.
  • Contraseña: contraseña del usuario anterior.
  • Nombre del driver: nombre exacto del driver ODBC a usar. Para el caso de este ejemplo, como hemos indicando arriba «SQL Server».
  • Trusted: tipo de conexión.

La aplicación Python anterior conectará mediante ODBC al servidor de base de datos indicado en el propio código fuente. Ejecutará las mismas consultas SQL que para el caso anterior. La primera obtendrá y mostrará el nombre de la base de datos a la que estamos conectados. La segunda mostrará todos los ficheros de datos del servidor de SQL Server. El resultado será el mismo que para el caso anterior.