Pergunta

Alguém pode me apontar na direção certa sobre como abrir um arquivo .mdb no python? Normalmente, gosto de incluir algum código para iniciar uma discussão, mas não sei por onde começar. Eu trabalho com o MySQL um pouco com o Python. Eu queria saber se existe uma maneira de trabalhar com arquivos .mdb de maneira semelhante?

Foi útil?

Solução

Abaixo está algum código que escrevi para Outra pergunta.
Requer a terceira parte Módulo PYODBC.

Este exemplo muito simples se conectará a uma tabela e exportará os resultados para um arquivo.
Sinta -se à vontade para expandir sua pergunta com necessidades mais específicas que você possa ter.

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)

Outras dicas

Lá está o Biblioteca Meza de Reuben Cummings que pode ler bancos de dados de acesso à Microsoft através mdbtools.

Instalação

# 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
…

Além da resposta de Bernie, acrescentaria que é possível recuperar o esquema do banco de dados. O código abaixo lista as tabelas (b [2] contém o nome da tabela).

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

O código abaixo lista todas as colunas de todas as tabelas:

colDesc = list(cur.columns())

Para uma solução que funcione em qualquer plataforma que possa executar Java, considere usar Jython ou Jaydebeapi juntamente com o Ucanaccess Driver JDBC. Para detalhes, consulte a pergunta relacionada

Leia um banco de dados de acesso em Python na plataforma não-Windows (Linux ou Mac)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top