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.
¿Qué hay de pyodbc ? Esta pregunta de SO demuestra que es posible leer MS Access usándolo.
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.
La manera en que conecto Python con MS Access en Windows es de esta manera: Conéctese a MS Access con Python . Quizás pueda encontrar algún problema en Win 7, así que encontré una solución: Solución de una conexión entre MS Access y Python en Windows 7
¡No he intentado conectarme bajo Linux!
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 .
Pregunta anterior, pero pensé en publicar una sugerencia alternativa de pypyodbc para Windows: ADO. Resulta que es muy fácil acceder a las bases de datos de Access, a las hojas de cálculo de Excel y a cualquier otra cosa con un controlador moderno (a diferencia del ODBC de la vieja escuela) a través de COM.
Mira los siguientes artículos:
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.
Si tiene tiempo de sobra, puede intentar reparar y actualizar esta clase python que lee las bases de datos MS-Access a través de la API nativa COM32-client: clase de extracción y manipulación para Microsoft Access
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í:
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.