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 pyodbc controlador para Python para conectarse a la base de datos y realizar operaciones básicas, como leer y escribir datos.
documentación de pyodbc | código fuente de pyodbc | Paquete (PyPi)
Prerrequisitos
Python 3
Si aún no tiene Python, instale el administrador de paquetes de Python runtime y el Índice de paquetes de Python (PyPI) desde python.org.
¿Prefiere no usar su propio entorno? Abra como un devcontainer mediante GitHub Codespaces.
Paquete
pyodbcde PyPI.Una base de datos en SQL Server, Azure SQL Database o SQL Database en Fabric con el
AdventureWorks2025esquema de ejemplo y una cadena de conexión válida.
Instalación
Siga estos pasos para configurar el entorno de desarrollo para desarrollar una aplicación mediante el pyodbc controlador de Python.
Nota:
Este controlador usa el protocolo de flujo de datos tabular (TDS), que está habilitado de forma predeterminada en SQL Server, SQL Database en Fabric y Azure SQL Database. No se requiere ninguna configuración adicional.
Instale el paquete pyodbc
Obtenga el paquete de pyodbc de PyPI.
Abra un símbolo del sistema en un directorio de archivos vacío.
Instale el paquete
pyodbc.pip install pyodbc
Instalación del paquete python-dotenv
Obtenga el 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
Creación de una base de datos SQL
Para este inicio rápido se requiere el esquema AdventureWorks2025 Lightweight en Microsoft SQL Server, la base de datos SQL en Fabric o Azure SQL Database.
Creación de una base de datos SQL en minutos mediante Azure Portal
Copie la ODBC cadena de conexión de la pestaña Cadenas de conexión .
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 pyodbc """Importe el paquete
pyodbc.from os import getenv from dotenv import load_dotenv from pyodbc import connectUse la función
pyodbc.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. Reemplace el ejemplo aquí por el valor real de la cadena de conexión.SQL_CONNECTION_STRING="Driver={ODBC Driver 18 for SQL Server};Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Sugerencia
La cadena de conexión que se usa aquí depende en gran medida del tipo de base de datos SQL a la que se conecta. Si se conecta a una base de datos de Azure SQL o a una base de datos SQL en Fabric, use la cadena de conexión ODBC de la pestaña Cadenas de conexión. Es posible que tenga que ajustar el tipo de autenticación en función de su escenario. Para obtener más información sobre las cadenas de conexión y su sintaxis, consulte referencia de sintaxis de cadena de conexión.
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 cualquier consulta y devuelve un conjunto de resultados que se puede iterar mediante el uso de cursor.fetchone().
Use
cursor.fetchallcon un loopforeachpara obtener todos los registros de la base de datos. A continuación, imprima los registros.records = cursor.fetchall() for r in records: print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")Guarde el
app.pyarchivo.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 instrucción INSERT 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 (?, ?, ?, ?, CURRENT_TIMESTAMP) """Ejecute la instrucción mediante
cursor.execute.cursor.execute( SQL_STATEMENT, ( f'Example Product {productNumber}', f'EXAMPLE-{productNumber}', 100, 200 ) )Capture la primera columna del único resultado mediante
cursor.fetchval, imprima el identificador único del resultado y, a continuación, confirme la operación como una transacción medianteconnection.commit.resultId = cursor.fetchval() print(f"Inserted Product ID : {resultId}") 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
Paso siguiente
Visite el repositorio de pyodbc GitHub del controlador para obtener más ejemplos, para contribuir a ideas o notificar problemas.