18 septiembre, 2021

IMPORTAR BASE DE DATOS DE ACCESS Y REALIZAR CONSULTAS CON PYTHON

Hace unos días me surgía la necesidad obtener el código en Python para importar una base de datos de Access y realizar una consulta en sus tablas.

Finalmente lo pude resolver y quedé bastante satisfecho con el desempeño del código. Os mostraré en primer lugar las dos tablas de la base de datos:

En efecto, la primera tabla se denomina BASE y contiene el nombre de los pueblos de españa junto con la provincia y el código de provincia.

En la segunda tabla, PERSONAS tenemos una serie de personas con un código de provincia.

Se requiere importar la base de datos y realizar una consulta para añadir el nombre de la provincia a la tabla PERSONAS.

Pues bien, el código que utilizaremos en Python será el siguiente:

import pyodbc
obSQL = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\USUARIO\Downloads\Nueva carpeta\DATABASE.accdb')
cursor = obSQL.cursor()
cursor.execute("select Distinct PERSONAS.`NOMBRE COMPLETO`,PERSONAS.PROVINCIA as `ID PROVINCIA`,BASE.PROVINCIA from PERSONAS LEFT Join BASE ON BASE.CPRO=PERSONAS.PROVINCIA ORDER BY PERSONAS.[NOMBRE COMPLETO]")  
nCampo = [column[0] for column in cursor.description]
print(nCampo)
for i in cursor.fetchall():
    print (i)

Una vez que importamos la biblioteca pyodbc ya podemos empezar a trabajar, en primer lugar establecemos la conexión indicando el path completo y a continuación la consulta SQL.

El resultado es el siguiente, (no lo voy a exportar a Excel):

Como podéis observar ya tenemos nuestra el tercer campo indicando el nombre de la provincia.

Este ejercicio lo podríamos realizar también con Pandas:

import pyodbc
import pandas as pd
obSQL = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\USUARIO\Downloads\Nueva carpeta\DATABASE.accdb')
pd1 = pd.read_sql_query("select Distinct PERSONAS.`NOMBRE COMPLETO`,PERSONAS.PROVINCIA as `ID PROVINCIA`,BASE.PROVINCIA from PERSONAS LEFT Join BASE ON BASE.CPRO=PERSONAS.PROVINCIA ORDER BY PERSONAS.[NOMBRE COMPLETO]", obSQL)
print(pd1)

Y con el mismo resultado (obviamente):

Y esto es todos, espero que os sea de utilidad y podáis utilizarlo en vuestras programaciones entre Python y Access.

Os dejo enlace a la base de datos de Access para realizar pruebas: DATABASE

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Comparte este post

6 comentario en “IMPORTAR BASE DE DATOS DE ACCESS Y REALIZAR CONSULTAS CON PYTHON

  1. Hola Cristian:

    el post que comentas en cuestión le he retirado para su revisión. Eran demasiadas las preguntas y no tengo tiempo para responder a todas. No sé si lo volveré a publicar, en cualquier caso, cuando tenga tiempo intentaré estudiar una solución que no genere tantas dudas.

    Saludos

    1. Gracias, disculpa la insistencia, pero pensé que tenía algún problema y se leían mis mensajes.

      Espero tener prontas respuestas, ya que necesito terminar unos informes y voy uno por uno.

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies