with conectar con python linux ms-access python-module

python - conectar - pypyodbc



¿Qué necesito para leer las bases de datos de Microsoft Access usando Python? (12)

¿Cómo puedo acceder a las bases de datos de Microsoft Access en Python? Con SQL?

Preferiría una solución que funciona con Linux, pero también podría conformarme con Windows.

Solo requiero acceso de lectura.



En Linux, MDBTools es tu única oportunidad a partir de ahora. [disputed]

En Windows, puede tratar con archivos mdb con pypyodbc.

Para crear un archivo Access mdb:

import pypyodbc pypyodbc.win_create_mdb( "D://Your_MDB_file_path.mdb" )

Aquí hay un script de Hello World que demuestra completamente las funciones de soporte de Access de pypyodbc.

Descargo de responsabilidad: soy el desarrollador de pypyodbc.


En Ubuntu 12.04 esto fue lo que hice para que funcione.

Instala pyodbc:

$ sudo apt-get install python-pyodbc

Siga instalando algunos controladores adicionales:

$ sudo apt-get install mdbtools libmdbodbc1

Haga un pequeño programa de prueba que se conecte al DB y muestre todas las tablas:

import os import pyodbc db_path = os.path.join("path", "toyour", "db.mdb") odbc_connection_str = ''DRIVER={MDBTools};DBQ=%s;'' % (db_path) connection = pyodbc.connect(odbc_connection_str) cursor = connection.cursor() query = "SELECT * FROM MSysObjects WHERE Type=1 AND Flags=0" cursor.execute(query) rows = cursor.fetchall() for row in rows: print row

Espero que haya ayudado.



Lo más probable es que desee utilizar un buen marco como SQLAlchemy para acceder a sus datos, o al menos, lo recomendaría. El soporte para Access es "experimental", pero recuerdo haberlo usado sin demasiados problemas. Él mismo usa pyodbc bajo el capó para conectarse a Access dbs, por lo que debería funcionar desde windows, linux, os x y whatnot.


Personalmente, nunca he podido obtener herramientas de MDB (junto con material ODBC relacionado como unixODBC) para que funcionen correctamente con Python o PHP bajo Linux, incluso después de numerosos intentos. Acabo de probar las instrucciones en la otra respuesta a esta pregunta here y todo lo que obtuve fue "Error de segmentación (núcleo volcado)".

Sin embargo, obtuve Jython y el controlador UCanAccess JDBC para leer los archivos .mdb y .accdb en Linux. Para obtener instrucciones detalladas sobre cómo configurarlo en Ubuntu 14.04 LTS, vea mi otra respuesta here .



Si sincronizas tu base de datos a la web usando EQL Data , entonces puedes consultar el contenido de tus tablas de Access usando JSON o YAML: http://eqldata.com/kb/1002 .

Ese artículo es sobre PHP, pero funcionaría igual de bien en Python.



Sin PYODBC he usado PYODBC para conectarme con éxito a un MS Access db, aunque en Windows. La instalación fue sencilla, el uso es bastante simple, solo necesitas configurar la cadena de conexión correcta (la de MS Access figura en la lista) y de ir con los ejemplos.


Tienes lo que parece ser una buena solución. Otro que podría estar un poco más cerca del "metal" del que te gustaría es MDB Tools.

MDB Tools es un conjunto de bibliotecas y utilidades de código abierto para facilitar la exportación de datos desde las bases de datos de MS Access (archivos mdb) sin utilizar las DLL de Microsoft. Por lo tanto, los SO no Windows pueden leer los datos. O, para decirlo de otra manera, están haciendo ingeniería inversa del diseño del archivo MDB.

También tenga en cuenta que dudo que hayan empezado a trabajar en archivos ACCDB y que probablemente no haya mucha solicitud para esa capacidad.


Para leer una base de datos de Access como un marco de datos pandas (Windows).

Esta es una solución muy rápida y fácil que he utilizado con éxito para bases de datos más pequeñas.

Puede leer una base de datos de Access haciendo un enlace permanente a Excel y guardando ese archivo (hace falta un par de clics), enlace aquí:

https://support.office.com/en-gb/article/Connect-an-Access-database-to-your-workbook-a3d6500c-4bec-40ce-8cdf-fb4edb723525

A continuación, puede simplemente leer ese archivo de Excel como un marco de datos pandas.

Por lo tanto, por ejemplo, guarde el archivo Excel vinculado como ''link_to_master.xlsx'' en la ubicación / FileStore / subfolder1 / subcarpeta.

Ejecute lo siguiente en python:

import pandas as pd import os os.chdir(''////FileStore//subfolder1//subfolder'') #sets the folder location df = pd.read_excel(''link_to_master.xlsx'') # reads the Excel file df

Considere la frecuencia de actualización del enlace si está visitando nuevamente su script de python. es decir, el vínculo entre Excel y Access es estático.