2010-09-01 14 views
33

Birisi python'da .mdb dosyasının nasıl açılacağı konusunda bana doğru yönlendirebilir mi? Bir tartışmayı başlatmak için normalde bir kod eklemeyi seviyorum ama nereden başlayacağımı bilmiyorum. Ben mysql ile python ile adil bir bit ile çalışıyorum. Benzer bir şekilde .mdb dosyaları ile çalışmak için bir yol olup olmadığını merak ediyordum?python ile .mdb erişim dosyalarının nasıl ele alınacağı

cevap

41

another SO question için yazdığım bazı kodlar aşağıdadır.
Üçüncü taraf pyodbc module gerektirir.

Bu çok basit örnek bir tabloya bağlanacak ve sonuçları bir dosyaya verilecektir.
Sorunuza, sahip olabileceğiniz daha spesifik gereksinimlerle genişletmek için çekinmeyin.

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) 
+1

Bu, Access'ten okumak için pyodbc ile varsayılan olarak dahil edilen bir sürücü olmadığından, Linux'tan çalışmıyor gibi görünüyor. "Veri kaynağı adı bulunamadı ve varsayılan sürücü belirtilmedi (0) (SQLDriverConnect)" – Cerin

+0

@Cerin: güncellemeye teşekkürler. Soru "Linux" dan bahsetmediğinden, bu endişeye değinmedim. Saygılarımla. – bernie

+1

@bernie linux'da bunu yapmanın bir yolu var mı? – NumenorForLife

3
+1

bu bağlantıyı soruya cevap olsa da, burada cevabın temel kısımlarını kapsar ve başvuru için bağlantıyı sağlamak için daha iyidir. Bağlantılı sayfa değiştiğinde yalnızca bağlantı yanıtları geçersiz olabilir. - [Yorum Gönder] (/ review/düşük kaliteli yazılar/18943453) –

1

bernie'nin yanıtına ek olarak, veritabanının şemasını kurtarmanın mümkün olduğunu ekleyebilirim. Aşağıdaki kod tabloları listeler (b [2] tablonun adını içerir).

Java çalıştırabilirsiniz herhangi bir platformda çalışan bir çözüm için
colDesc = list(cur.columns()) 
3

mdbtools aracılığıyla, Microsoft Access veritabanları okuyabilir meza library by Reuben Cummings var bakın.

Kurulum

# 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 

Kullanımı

>>> from meza import io 

>>> records = io.read('database.mdb') # only file path, no file objects 
>>> print(next(records)) 

Table1 
Table2 
… 
+0

Linux ile iyi çalışıyor (Cenevre 7 ve Ubuntu python 2.7 ile test), .mdb dosyalarından veri okumak için çok kolay bir yol. Teşekkürler ;-) – serfer2

İlgili konular