Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En esta guía rápida, conectemos un script de Python a una base de datos que creaste y cargaste con datos de ejemplo. Use el mssql-python controlador para Python para conectarse a la base de datos y realizar operaciones básicas, como leer y escribir datos.
El mssql-python controlador no requiere ninguna dependencia externa en máquinas Windows. El controlador instala todo lo que necesita con una sola pip instalación, lo que le permite usar la versión más reciente del controlador para nuevos scripts sin interrumpir otros scripts que no tenga tiempo para actualizar y probar.
Utiliza el ejemplo de autenticación SQL local en este artículo solo para desarrollo local contra una instancia de SQL Server que controles. Para Azure SQL Database, base de datos SQL en Fabric, entornos de desarrollo compartidos, CI y despliegues en producción, empieza con la autenticación Microsoft Entra u otro flujo sin contraseña.
Documentación
Prerrequisitos
Python 3.10 o posterior
Si aún no tiene Python, instale el entorno de ejecución de Python y el administrador de paquetes pip desde python.org.
¿No quieres utilizar tu propio entorno? Sigue las instrucciones de Contenedores y desarrollo local para crear un devcontainer reproducible o un entorno de GitHub Codespaces.
Crea o conéctate a una base de datos en SQL Server, Azure SQL Database o base de datos SQL en Fabric. Utiliza los siguientes pasos para configurar una base de datos con el AdventureWorks2025 esquema de muestra y conserva la cadena de conexión para más adelante.
Creación de una base de datos SQL
Crea o conéctate a una base de datos SQL en una de las siguientes plataformas:
Configuración
Siga estos pasos para configurar el entorno de desarrollo para desarrollar una aplicación mediante el mssql-python controlador de Python.
Nota:
Este controlador utiliza el protocolo Tabular Data Stream (TDS ). SQL Server, la base de datos SQL en Fabric y Azure SQL Database habilitan TDS por defecto, por lo que no es necesaria ninguna configuración adicional.
Instalación del paquete mssql-python
Obtenga el paquete de mssql-python de PyPI.
Abra un símbolo del sistema en un directorio de archivos vacío.
Instale el paquete
mssql-python.
Instala el paquete python-dotenv
Obtén el paquete python-dotenv de PyPI.
En el mismo directorio, instale el
python-dotenvpaquete.pip install python-dotenv
Compruebe los paquetes instalados
Puede usar la herramienta de línea de comandos PyPI para comprobar que los paquetes previstos están instalados.
Compruebe la lista de paquetes instalados con
pip list.pip list
Ejecución del código
Crear un nuevo archivo
Cree un nuevo archivo llamado
app.py.Agregue una docstring de módulo.
""" Connects to a SQL database using mssql-python """Importe los paquetes, incluido
mssql-python.from os import getenv from dotenv import load_dotenv from mssql_python import connectUse la función
mssql-python.connectpara conectarse a una base de datos SQL.load_dotenv() conn = connect(getenv("SQL_CONNECTION_STRING"))En el directorio actual, cree un nuevo archivo denominado
.env.En el
.envarchivo, agregue una entrada para la cadena de conexión denominadaSQL_CONNECTION_STRING. Utiliza uno de los siguientes ejemplos y sustituye los marcadores de posición por tus valores reales.Para Azure SQL Database o SQL Database en Fabric, comienza con la autenticación de Microsoft Entra:
SQL_CONNECTION_STRING="Server=<server_name>;Database=<database_name>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Para SQL Server local durante el desarrollo, empieza con la autenticación SQL:
SQL_CONNECTION_STRING="Server=localhost,1433;Database=<database_name>;UID=<username>;PWD=<password>;Encrypt=yes;TrustServerCertificate=yes"Caution
Trátalo
.envcomo una conveniencia de desarrollo local, no como un mecanismo de despliegue. Nunca lo comprometas, nunca reutilices esta muestra de autenticación SQL en entornos compartidos o de producción, y mantén activada la validación de certificados fuera del desarrollo local.Utiliza cadenas de conexión para adaptar la muestra a instancias nombradas, contenedores o configuraciones avanzadas. Si te conectas a Azure SQL Database o SQL Database en Fabric, usa la autenticación Microsoft Entra para opciones de inicio de sesión interactivo y sin contraseña. Para una orientación más amplia sobre secretos y certificados, consulte las mejores prácticas de seguridad.
Ejecutar una consulta
Use una cadena de consulta SQL para ejecutar una consulta y analizar los resultados.
Cree una variable para la cadena de consulta SQL.
SQL_QUERY = """ SELECT TOP 5 c.CustomerID, c.CompanyName, COUNT(soh.SalesOrderID) AS OrderCount FROM SalesLT.Customer AS c LEFT OUTER JOIN SalesLT.SalesOrderHeader AS soh ON c.CustomerID = soh.CustomerID GROUP BY c.CustomerID, c.CompanyName ORDER BY OrderCount DESC; """Use
cursor.executepara recuperar un conjunto de resultados de una consulta en la base de datos.cursor = conn.cursor() cursor.execute(SQL_QUERY)Nota:
Esta función acepta esencialmente cualquier consulta y devuelve un conjunto de resultados. Para iterar sobre el conjunto de resultados, utiliza cursor.fetchone().
Use
cursor.fetchallcon un loopforpara obtener todos los registros de la base de datos. Luego, imprime los registros.records = cursor.fetchall() for r in records: print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")Guarde el
app.pyarchivo.Sugerencia
En macOS, tanto
ActiveDirectoryInteractivecomoActiveDirectoryDefaultfuncionan para la autenticación de Microsoft Entra.ActiveDirectoryInteractivele pide que inicie sesión cada vez que ejecute el script. Para evitar que se repitan las indicaciones de inicio de sesión, inicia sesión una vez a través de la CLI de Azure ejecutandoaz login, y luego usaActiveDirectoryDefault, que reutiliza la credencial almacenada en caché.Abra un terminal y pruebe la aplicación.
python app.pyEste es el resultado esperado.
29485 1 Professional Sales and Service 29531 1 Remarkable Bike Store 29546 1 Bulk Discount Store 29568 1 Coalition Bike Company 29584 1 Futuristic Bikes
Inserte una fila como transacción
Ejecute una INSERT instrucción de forma segura y pase parámetros. Pasar parámetros como valores protege la aplicación frente a ataques por inyección de CÓDIGO SQL .
Agregue una importación para
randrangedesde larandombiblioteca a la parte superior deapp.py.from random import randrangeAl final de
app.pyagregar código para generar un número de producto aleatorio.productNumber = randrange(1000)Sugerencia
La generación de un número de producto aleatorio aquí garantiza que puede ejecutar este ejemplo varias veces.
Cree una cadena de instrucción SQL.
SQL_STATEMENT = """ INSERT SalesLT.Product ( Name, ProductNumber, StandardCost, ListPrice, SellStartDate ) OUTPUT INSERTED.ProductID VALUES (%(name)s, %(product_number)s, %(standard_cost)s, %(list_price)s, CURRENT_TIMESTAMP) """Ejecute la instrucción mediante
cursor.execute.cursor.execute( SQL_STATEMENT, { 'name': f'Example Product {productNumber}', 'product_number': f'EXAMPLE-{productNumber}', 'standard_cost': 100, 'list_price': 200 } )Capture el único resultado mediante
cursor.fetchone, imprima el identificador único del resultado y, a continuación, confirme la operación como una transacción medianteconnection.commit.result = cursor.fetchone() print(f"Inserted Product ID : {result.ProductID}") conn.commit()Sugerencia
Opcionalmente, puede usar
connection.rollbackpara revertir la transacción.Cierre el cursor y la conexión mediante
cursor.closeyconnection.close.cursor.close() conn.close()Guarde el
app.pyarchivo y vuelva a probar la aplicación.python app.pyEste es el resultado esperado.
Inserted Product ID : 1001
Pasos siguientes
Utiliza estos artículos para seguir creciendo:
- Cadenas de conexión para adaptar el ejemplo para SQL Server local, Azure SQL, contenedores e instancias nombradas.
- Gestión de conexiones para usar gestores de contexto, pooling y ajustes de conexión.
- Solución de problemas para diagnosticar autenticación, certificados y problemas de conectividad.