En un mundo perfecto de administración de bases de datos, todo sería igual. Todos los servidores serían idénticos y ejecutarían las mismas cargas de trabajo. Serían más fáciles de gestionar. Pero, ese no es el caso. Hoy en día, los administradores de sistemas tienen que gestionar diferentes entornos. Esto no podría ser más evidente en la necesidad de realizar consultas SQL desde una máquina Linux. ¡En esta publicación, aprenderás cómo conectarte a SQL Server desde Linux!
Una forma de conectarse a SQL Server desde Linux es usar un módulo de Python. Pero antes de llegar tan lejos, primero veamos en qué entorno estoy trabajando.
En este artículo, estaré demostrando esta tarea usando Ubuntu 16.04 y me conectaré a SQL Server 2012 R2. Pero, la misma técnica debería aplicarse también a otras distribuciones de Linux y versiones de SQL Server. ¡Los administradores de bases de datos celebran!
Prerrequisitos
Para empezar, necesitarás instalar algunos prerrequisitos. Primero, ya que te conectarás a una instancia de SQL Server desde Python, necesitarás un módulo de Python. Un módulo de Python común para conectarse a SQL se llama PyODBC. Este módulo te permite consultar bases de datos SQL a través de ODBC mediante un controlador ODBC de SQL Server para Linux. Para instalar la última versión, usa pip (el gestor de paquetes de Python).
Si esto no funciona, es posible que no tengas pip instalado. Para instalar pip:
A continuación, necesitas crear un script de Python. Voy a llamar a este sql_server.py. Para crear un script de Python, primero crea un archivo en blanco.
Luego, utilizando tu editor de preferencia, añade las siguientes líneas. El shebang seguido de la ruta al binario de Python le indica al intérprete que este es un script de Python. La declaración import
te permite llamar a los métodos de la biblioteca dentro del módulo pyodbc. Guarda este script.
Una vez que hayas creado el script de Python, ejecútalo:
Si se ejecuta sin errores, significa que el módulo pyodbc se ha instalado correctamente.
A continuación, agrega el código para ejecutar una consulta de prueba. Para hacer esto, crea una cadena ODBC.
Para obtener más información sobre cómo elaborar cadenas ODBC, aquí tienes un buen recurso.
La cadena ODBC es exigente en cuanto a lo que se incluye. Me tomó algo de tiempo descubrir cómo hacer que esto funcione, pero aquí está cómo se ve la mía. A continuación, paso la cadena ODBC como argumento al método connect()
que se incluye con el módulo pyodbc.
La mayoría de la cadena ODBC es evidente, pero un hecho importante es el doble backslash para el UID. Asegúrate siempre de haber escapado cualquier barra invertida en la cadena ODBC. Además, algunas de las opciones que estoy usando son opcionales.
También, puedes usar el nombre de host para SERVER
como lo he hecho arriba o puedes usar la dirección IP del servidor SQL.
No dudes en añadir o eliminarlas según consideres adecuado para que coincida con tu servidor SQL.
A continuación, necesitas crear un objeto cursor que te permitirá pasar una declaración T-SQL. Esto se hace con el método cursor()
.
Ahora tienes un objeto con un método execute()
que se puede utilizar para pasar cualquier declaración T-SQL que deseemos, como se muestra a continuación. Esto crea una variable rows
que contiene el conjunto de datos resultante.
Ahora has llegado al punto en el que necesitarás decidir qué hacer con el conjunto de datos. Puedes enviar los resultados a un archivo CSV, poner los resultados en otra base de datos o escribir el contenido en la consola.
A continuación, estoy imprimiendo los resultados en la consola si el conjunto de datos está poblado.

Puedes ver que si el conjunto de datos se imprime en la consola, la salida no es muy bonita. En este punto, depende de ti decidir cómo formatear o analizar los datos de la base de datos. ¡Lo difícil ya pasó!
Ahora terminarás con un script que se ve así:
Resumen
En esta publicación del blog, aprendiste cómo usar el módulo Python pyodbc en Linux para conectarte a una fuente de datos de SQL Server. La parte más difícil para mí fue descifrar la cadena ODBC, pero una vez que lo logres, todo debería ser más sencillo.
Una vez que te estés conectando desde Linux, ¿por qué no ver si puedes mejorar el rendimiento usando contadores de rendimiento?
Source:
https://adamtheautomator.com/connect-to-sql-server-from-linux/