سؤال

هل يمكن لأحد أن يوجهني في الاتجاه الصحيح حول كيفية فتح ملف .mdb في بيثون؟ أحب عادة تضمين بعض التعليمات البرمجية لبدء مناقشة ، لكنني لا أعرف من أين أبدأ. أنا أعمل مع mysql قليلا مع بيثون. كنت أتساءل عما إذا كانت هناك طريقة للعمل مع ملفات .mdb بطريقة مماثلة؟

هل كانت مفيدة؟

المحلول

فيما يلي بعض الرمز الذي كتبته آخر سؤال.
يتطلب الطرف الثالث وحدة PyoDBC.

سيقوم هذا المثال البسيط للغاية بالاتصال بجدول وتصدير النتائج إلى ملف.
لا تتردد في التوسع في سؤالك مع أي احتياجات محددة أكثر.

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)

نصائح أخرى

هناك مكتبة Meza بواسطة Reuben Cummings التي يمكنها قراءة قواعد بيانات Microsoft Access من خلال MDBTools.

تثبيت

# 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

الاستخدام

>>> from meza import io

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

Table1
Table2
…

بالإضافة إلى استجابة بيرني ، أود أن أضيف أنه من الممكن استرداد مخطط قاعدة البيانات. يسرد الرمز أدناه الجداول (B [2] يحتوي على اسم الجدول).

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

يسرد الرمز أدناه جميع الأعمدة من جميع الجداول:

colDesc = list(cur.columns())

للحصول على حل يعمل على أي منصة يمكنها تشغيل Java ، فكر في استخدام جيثون أو جايديبيبي جنبا إلى جنب مع Ucanaccess سائق JDBC. للحصول على التفاصيل ، راجع السؤال ذي الصلة

اقرأ قاعدة بيانات الوصول في Python على منصة غير Windows (Linux أو Mac)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top