Qualcuno può indicarmi la giusta direzione su come aprire un file .mdb in python? Normalmente mi piace includere del codice per iniziare una discussione, ma non so da dove iniziare. Lavoro con mysql un bel po 'con Python. Mi stavo chiedendo se c'è un modo per lavorare con i file .mdb in modo simile?come gestire i file di accesso .mdb con python
risposta
Di seguito è riportato un codice che ho scritto per another SO question.
Richiede il numero di parte pyodbc module.
Questo esempio molto semplice si collegherà a una tabella ed esporterà i risultati in un file.
Sentiti libero di ampliare la tua domanda con eventuali esigenze più specifiche che potresti avere.
import csv, pyodbc
# set up some constants
MDB = 'c:/path/to/my.mdb'; DRV = '{Microsoft Access Driver (*.mdb)}'; PWD = 'pw'
# connect to db
con = pyodbc.connect('DRIVER={};DBQ={};PWD={}'.format(DRV,MDB,PWD))
cur = con.cursor()
# run a query and get the results
SQL = 'SELECT * FROM mytable;' # your query goes here
rows = cur.execute(SQL).fetchall()
cur.close()
con.close()
# you could change the mode from 'w' to 'a' (append) for any subsequent queries
with open('mytable.csv', 'wb') as fou:
csv_writer = csv.writer(fou) # default field-delimiter is ","
csv_writer.writerows(rows)
Questo è simile a una domanda precedente:
- What do I need to read Microsoft Access databases using Python?
- http://code.activestate.com/recipes/528868-extraction-and-manipulation-class-for-microsoft-ac/
risposta ci dovrebbe essere utile.
Mentre questo link può rispondere alla domanda, è meglio per includere le parti essenziali della risposta qui e fornire il link di riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - [Dalla recensione] (/ recensione/post di bassa qualità/18943453) –
Oltre alla risposta di bernie, vorrei aggiungere che è possibile ripristinare lo schema del database. Il codice seguente elenca le tabelle (b [2] contiene il nome della tabella).
con = pyodbc.connect('DRIVER={};DBQ={};PWD={}'.format(DRV,MDB,PWD))
cur = con.cursor()
tables = list(cur.tables())
print 'tables'
for b in tables:
print b
Il codice di seguito elenca tutte le colonne di tutte le tabelle:
colDesc = list(cur.columns())
Per una soluzione che funziona su qualsiasi piattaforma in grado di eseguire Java, è possibile utilizzare Jython o JayDeBeApi insieme con il driver UCanAccess JDBC . Per i dettagli, consultare la relativa domanda
Read an Access database in Python on non-Windows platform (Linux or Mac)
C'è il meza library by Reuben Cummings che può leggere i database Microsoft Access attraverso mdbtools.
installazione
# The mdbtools package for Python deals with MongoDB, not MS Access.
# So install the package through `apt` if you're on Debian/Ubuntu
$ sudo apt install mdbtools
$ pip install meza
Uso
>>> from meza import io
>>> records = io.read('database.mdb') # only file path, no file objects
>>> print(next(records))
Table1
Table2
…
funziona bene con Linux (testato in CenOs 7 e Ubuntu con python 2.7), modo molto semplice per leggere i dati da file .mdb. Grazie ;-) – serfer2
- 1. Accesso MDB: l'accesso ai file MDB ha un limite superiore?
- 2. Accesso recupero password mdb
- 3. Accesso a un database JET (.mdb) in Python
- 4. Utilizzando un database di Access (.mdb) con Python su Ubuntu
- 5. Come gestire i file hdf5 in R?
- 6. Accesso a un sito Web tramite Python: come gestire CSRF?
- 7. Come gestire diversi sottoprogetti Python con setuptools?
- 8. Come gestire i pacchetti Python con nomi in conflitto?
- 9. Come gestire nomi di file indecifrabili in Python?
- 10. Come gestire i file con lo stesso nome in Wix?
- 11. Come posso gestire i file statici con Python webapp2 in Heroku?
- 12. Come gestire i file incompleti? Ottenere l'eccezione
- 13. Come gestire i file caricati in webapp2
- 14. Come gestire i file temporanei in ASP.NET?
- 15. Python | accesso a dll utilizzando i tipi di carattere
- 16. Come gestire i caratteri Unicode (non ASCII) in Python?
- 17. Come connettersi a un file MS Access (mdb) usando C#?
- 18. Come gestire i file di configurazione con distutils per rispettare FHS di unixen?
- 19. Come gestire correttamente le connessioni Redis con Python/Python RQ?
- 20. Come gestire i valori vuoti nei file di configurazione con ConfigParser?
- 21. Come gestire una mappa con i puntatori?
- 22. Come gestire i valori temporali su 24 ore in python?
- 23. Come gestire i download di file utilizzando JavaFX 2.0 WebEngine
- 24. Come collegare pyodbc ad un file di Access (.mdb) di database
- 25. eccezione python non riconosciuta; come gestire con tranne?
- 26. analizzando i file gettext .po con python
- 27. Come gestire file di dati di grandi dimensioni con GitHub?
- 28. Consenti download MDB in IIS7
- 29. Accesso a due file con impostazioni diverse
- 30. Come gestire i NaN mancanti per l'apprendimento automatico in python
Questo non sembra funzionare da Linux, dal momento che non vi è alcun driver incluso di default con pyodbc per la lettura di Access. "Nome origine dati non trovato e nessun driver predefinito specificato (0) (SQLDriverConnect)" – Cerin
@Cerin: grazie per l'aggiornamento. Poiché la domanda non specificava "da Linux", non ho affrontato questo problema. I migliori saluti. – bernie
@bernie c'è un modo per farlo in linux? – NumenorForLife