【问题标题】:how to deal with .mdb access files with python如何用python处理.mdb访问文件
【发布时间】:2011-04-06 22:32:37
【问题描述】:

有人可以为我指出如何在 python 中打开 .mdb 文件的正确方向吗?我通常喜欢包含一些代码来开始讨论,但我不知道从哪里开始。我用 mysql 和 python 一起工作。我想知道是否有办法以类似的方式处理 .mdb 文件?

【问题讨论】:

    标签: python ms-access


    【解决方案1】:
    【解决方案2】:

    下面是我为another SO question写的一些代码。
    它需要第三方pyodbc module

    这个非常简单的示例将连接到一个表并将结果导出到一个文件。
    如果您有任何更具体的需求,请随意扩展您的问题。

    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', 'w') as fou:
        csv_writer = csv.writer(fou) # default field-delimiter is ","
        csv_writer.writerows(rows)
    

    【讨论】:

    • 这似乎不适用于 Linux,因为 pyodbc 默认不包含用于读取 Access 的驱动程序。 “未找到数据源名称,并且未指定默认驱动程序 (0) (SQLDriverConnect)”
    • @bernie 有没有办法在 linux 中做到这一点?
    • @jsc123 有关适用于 Linux 的解决方案,请参阅 my answer
    • @VigneshRajendran:将模式从 'wb' 更改为 'w'。答案已编辑。
    • 在较新的 Access 版本中,它应该是 Microsoft Access Driver (*.mdb, *.accdb)
    【解决方案3】:

    除了 bernie 的回复之外,我还要补充一点,可以恢复数据库的架构。下面的代码列出了表(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())
    

    【讨论】:

      【解决方案4】:

      对于适用于任何可运行 Java 的平台的解决方案,请考虑使用 JythonJayDeBeApi 以及 UCanAccess JDBC 驱动程序。详情见相关问题

      Read an Access database in Python on non-Windows platform (Linux or Mac)

      【讨论】:

        【解决方案5】:

        还有meza library by Reuben Cummings可以通过mdbtools读取Microsoft Access数据库。

        安装

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

        【讨论】:

        • 在 Linux 上运行良好(在 CenOs 7 和 Ubuntu 中使用 python 2.7 测试),从 .mdb 文件中读取数据的非常简单的方法。谢谢;-)
        • 这是免费和开源的吗?
        • @karnataka 它使用 MIT 许可证,所以是的。 (github.com/reubano/meza/blob/master/LICENSE)
        • 我有一个大的 MDB 文件,它给出的错误读取:是一个目录无法读取第一页。无法打开数据库。
        • @karnataka 您应该创建一个单独的问题,在其中列出产生您提到的错误的步骤。
        【解决方案6】:

        此代码会将所有表格转换为 CSV。

        快乐编码

        for tbl in mdb.list_tables("file_name.MDB"):
            df = mdb.read_table("file_name.MDB", tbl)
            df.to_csv(tbl+'.csv')
        

        【讨论】:

        • 什么是mdb?你进口了什么?是第三方库吗?
        • 它基本上是微软数据库文件,在其中导入数据后,您可以使用上述方法将其转换为数据框
        • 没有import mdbmdb = ... 之类的行,此代码sn-p 非常不清楚...
        • 很可能忘记了库:'pandas_access' import pandas_access as mdb 更多信息:# pypi.org/project/pandas_access - plugin # pydigger.com/pypi/pandas_access - ***
        猜你喜欢
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        • 2011-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多