Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Conexion ODBC Access y Python
#1
Hola a todos

Estoy intentando crear un script para conectar una base de datos Access con Python

La versión de Python es la 3.11.4 x64 ( la que se descarga por defecto). La Versión de Access 2019 es x86. Tambien es la versión por defecto que se descarga desde la web de Microsoft.

Estoy intentando usar la librería pyodbc pero me dice que no encuentra el ODBC

Cita:pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][Administrador de controladores ODBC] No se encuentra el nombre del origen de datos y no se especificó ningún controlador predeterminado (0) (SQLDriverConnect)')

Si busco conexiones sólo encuentra el ODBC de SQL Server 
Código:
pyodbc.dataSources()
{'conexion_1': 'SQL Server Native Client 10.0'}

Sin embargo, si abro ODBC 32-bit en Windows sí que me aparece el ODBC de Access. Es decir está instalado (cosa que ya sabía porque lo uso diariamente con VBA)

He leído que Python y Access deben tener la misma arquitectura (x64 ó x86) para que librería pueda leer el ODBC. ¿Esto es así? ¿Hay algo que puede hacer o estoy condenado?

Instalar Office x64 no es una opción.

Saludos


Archivos adjuntos Miniatura(s)
   
Responder
#2
Hola, Rafa.

¿Cuál es el código que estás usando para conectarte? ¿Instalar Python de 32 bits no es una opción?

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
(08-08-2023, 09:15 PM)Francisco escribió: Hola, Rafa.

¿Cuál es el código que estás usando para conectarte? ¿Instalar Python de 32 bits no es una opción?

Saludos

Hola Francisco,
Por defecto, desde la web de Python, el instalador que se descarga por defecto es el de x64. No he querido buscar otras versiones. Al final serán problemas.

Respecto al código... 

Código:
import pyodbc
cnn= pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\Usuario\Desktop\prueba.accdb')
cursor = cnn.cursor()
sql= "select * from clientes" 

rst = cursor.execute(sql)
filas = rst.fetchall()

if filas is not None:
    for fila in filas:
        print(fila)
else:
    print("No hay datos en la tabla.")
   
cursor.close()
cnn.close()

Debo decir que en SQLserver funciona bien pero no quiero dejar contraseñas a la vista. De ahí el uso de Access.

Saludos
Responder
#4
Intentaría bajar el intérprete de 32-bit para quitar la duda de si el error tiene que ver con eso. No hay problema en tener múltiples intérpretes instalados, de distintas versiones o arquitecturas.
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 4 invitado(s)