Conectarse a un Microsoft SQL Server usando Python y Pyodbc

Vaibhav Vaibhav 4 diciembre 2021
Conectarse a un Microsoft SQL Server usando Python y Pyodbc

Microsoft SQL Server es un sistema de administración de bases de datos relacionales o RDBMS en resumen. Como su nombre indica, fue desarrollado por Microsoft y está escrito en C/C++. Es una herramienta que permite a sus usuarios interactuar con bases de datos relacionales utilizando SQL o lenguaje de consulta estructurado.

Cuando trabajamos con aplicaciones del mundo real, tenemos que lidiar con una gran cantidad de datos. Los datos deben actualizarse, crearse y eliminarse cada segundo, y estos RDBMS son lo suficientemente inteligentes y robustos para manejar tales operaciones de forma rápida y segura.

Ahora, las aplicaciones se desarrollan utilizando varios lenguajes de programación. Significa que cada lenguaje de programación debe tener una forma de conectarse a estos RDBMS y acceder a los datos almacenados dentro de las bases de datos. Estas formas incluyen ORM o bibliotecas de mapeo relacional de objetos y paquetes de conectividad abierta de bases de datos o ODBC. Estas son dos cosas muy diferentes y ambas se pueden usar para conectarse a bases de datos.

Una simple diferencia entre los dos es que ORM permite a los desarrolladores interactuar con bases de datos usando clases de Python o modelos que representan tablas y administradores de bases de datos (otra clase de Python) para realizar consultas sobre los modelos. Por otro lado, ODBC permite a los desarrolladores escribir consultas SQL nativas o sin procesar para interactuar con la base de datos directamente.

Dado que Python es un lenguaje de programación famoso y ampliamente utilizado, también tiene un buen soporte para ORM y ODBC. Y, dado que estamos hablando de conectarse a Microsoft SQL Server usando Python y pyodbc, aprenderemos principalmente sobre ODBC, porque pyodbc es un ODBC.

Conexión a un servidor Microsoft SQL mediante pyodbc

Para conectarse a Microsoft SQL Server, primero necesitamos algunos detalles sobre el servidor: el nombre del controlador, el nombre del servidor y el nombre de la base de datos. Con la información anterior, se debe crear una cadena especial, que se pasará a la función connect() de la biblioteca pyodbc.

El formato de la cadena es el siguiente:

Driver = { < driver_name > }
Server = <server_name >
Database = <database_name >
Trusted_Connection = yes

Usando el método connect(), se establecerá una conexión entre el programa y el servidor, y luego, usando esa conexión, las consultas SQL se pueden realizar directamente sobre la base de datos.

Consulte el siguiente código para el mismo.

import pyodbc

connection = pyodbc.connect(
    "Driver={<driver_name>};Server=<server_name>;Database=<database_name>;Trusted_Connection=yes;"
)  # Connection string
cursor = connection.cursor()
cursor.execute("SELECT * FROM <table_name>")  # Executing a query

for row in cursor:  # Looping over returned rows and printing them
    print(f"row = {row}")

También se puede conectar a un servidor utilizando el DSN o el Nombre de la fuente de datos, una identificación de usuario y una contraseña. Y la cadena para el mismo es la siguiente.

DSN = <dsn >
UID = <user >
PWD = <password >

Para tal caso, consulte el siguiente código.

import pyodbc

connection = pyodbc.connect("DSN=<dsn>;UID=<user>;PWD=<password>")  # Connection string
cursor = connection.cursor()
cursor.execute("SELECT * FROM <table_name>")  # Executing a query

for row in cursor:  # Looping over returned rows and printing them
    print(f"row = {row}")

Para saber más sobre los drivers de Microsoft SQL Server, las conexiones y la información necesaria para conectarse usando la librería, consulte aquí. Y, para aprender más sobre la biblioteca en sí, consulte la documentación oficial aquí.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.