2010-09-01 34 views
33

Ai đó có thể chỉ cho tôi đúng hướng về cách mở tệp .mdb trong python không? Tôi thường thích bao gồm một số mã để bắt đầu một cuộc thảo luận, nhưng tôi không biết bắt đầu từ đâu. Tôi làm việc với mysql một chút công bằng với python. Tôi đã tự hỏi nếu có một cách để làm việc với các tập tin .mdb theo cách tương tự?cách xử lý tệp .mdb với python

Trả lời

41

Dưới đây là một số mã tôi đã viết cho another SO question.
Yêu cầu bên thứ ba pyodbc module.

Ví dụ rất đơn giản này sẽ kết nối với một bảng và xuất kết quả vào một tệp.
Hãy thoải mái mở rộng theo câu hỏi của bạn với bất kỳ nhu cầu cụ thể nào khác mà bạn có thể có.

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

Điều này dường như không hoạt động trên Linux, vì không có trình điều khiển nào được bao gồm theo mặc định với pyodbc để đọc Truy cập. "Không tìm thấy tên nguồn dữ liệu và không có trình điều khiển mặc định nào được chỉ định (0) (SQLDriverConnect)" – Cerin

+0

@Cerin: cảm ơn bạn đã cập nhật. Vì câu hỏi không chỉ rõ "từ Linux" nên tôi đã không giải quyết vấn đề đó. Trân trọng. – bernie

+1

@bernie là có một cách để làm điều này trong linux? – NumenorForLife

3
+1

Trong khi liên kết này có thể trả lời câu hỏi, nó là tốt hơn để bao gồm các thành phần cốt lõi của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. - [Từ đánh giá] (/ review/low-quality-posts/18943453) –

1

Ngoài phản hồi của bernie, tôi sẽ thêm rằng có thể khôi phục giản đồ của cơ sở dữ liệu. Mã dưới đây liệt kê các bảng (b [2] chứa tên của bảng).

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ạn code dưới đây liệt kê tất cả các cột từ tất cả các bảng:

colDesc = list(cur.columns()) 
3

Có những meza library by Reuben Cummings có khả năng đọc cơ sở dữ liệu Microsoft Access thông qua mdbtools.

Lắp đặt

# 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 

Cách sử dụng

>>> from meza import io 

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

Table1 
Table2 
… 
+0

hoạt động tốt với Linux (được thử nghiệm trong CenOs 7 và Ubuntu với python 2.7), cách dễ dàng để đọc dữ liệu từ các tệp .mdb. Cảm ơn ;-) – serfer2

Các vấn đề liên quan