代码之家  ›  专栏  ›  技术社区  ›  Georg Schölly Crazy Developer

使用python读取Microsoft Access数据库需要什么?

  •  31
  • Georg Schölly Crazy Developer  · 技术社区  · 16 年前

    如何在python中访问Microsoft Access数据库?用SQL?

    我更喜欢与Linux一起工作的解决方案,但我也可以选择Windows。

    我只需要读取权限。

    12 回复  |  直到 7 年前
        1
  •  22
  •   Jon Cage    10 年前

    我已经用过 PYODBC 但要成功连接到Windows上的MS Access数据库。安装很简单,使用也相当简单,只需设置正确的连接字符串(列表中给出了用于MS访问的字符串),然后使用示例。

        2
  •  29
  •   Community CDub    8 年前

    在Linux上,mdbtools是您目前唯一的机会。 [disputed]

    在Windows上,可以使用pypyodbc处理mdb文件。

    要创建Access MDB文件,请执行以下操作:

    import pypyodbc
    pypyodbc.win_create_mdb( "D:\\Your_MDB_file_path.mdb" )
    

    Here is an Hello World script 完全演示了pypyodbc的访问支持功能。

    免责声明:我是pypyodbc的开发者。

        3
  •  10
  •   Community CDub    8 年前

    怎么样 pyodbc ? This SO question 演示使用它可以读取MS Access。

        4
  •  9
  •   Tony Toews    16 年前

    你得到了听起来不错的解决方案。另一个可能比你想要的更接近“金属”的工具是mdb工具。

    MDB Tools 是一组开放源代码库和实用程序,用于在不使用Microsoft DLL的情况下方便从MS Access数据库(mdb文件)导出数据。因此,非Windows操作系统可以读取数据。或者,换句话说,他们正在对mdb文件的布局进行反向工程。

    另外请注意,我怀疑他们是否已经开始处理accdb文件,并且可能不会对该功能有太多要求。

        5
  •  3
  •   Erik Knowles    11 年前

    老问题,但我想我会为windows发布一个pypyodbc替代建议:ado。事实证明,通过COM使用现代(而不是老式的ODBC)驱动程序很容易访问数据库、Excel电子表格以及其他任何东西。

    查看以下文章:

        6
  •  2
  •   Menda    11 年前

    在Ubuntu 12.04上,这就是我所做的工作。

    安装PYODBC:

    $ sudo apt-get install python-pyodbc
    

    接下来安装一些额外的驱动程序:

    $ sudo apt-get install mdbtools libmdbodbc1
    

    制作一个连接到数据库并显示所有表的小测试程序:

    import os
    import pyodbc
    
    db_path = os.path.join("path", "toyour", "db.mdb")
    odbc_connection_str = 'DRIVER={MDBTools};DBQ=%s;' % (db_path)
    connection = pyodbc.connect(odbc_connection_str)
    cursor = connection.cursor()
    
    query = "SELECT * FROM MSysObjects WHERE Type=1 AND Flags=0"
    cursor.execute(query)
    rows = cursor.fetchall()
    for row in rows:
        print row
    

    希望能有所帮助。

        7
  •  2
  •   Community CDub    8 年前

    就我个人而言,我从未能够让mdb工具(连同unixodc等相关的odbc工具)在Linux下与python或php一起正常工作,即使经过多次尝试。我刚试过这个问题的另一个答案中的说明 here 我得到的只是“分割错误(核心转储)”。

    然而,我确实得到了Jython和 UCanAccess 用于在Linux上读取.mdb和.accdb文件的JDBC驱动程序。有关如何在Ubuntu 14.04 LTS下设置它的详细说明,请参阅我的其他答案。 here .

        8
  •  2
  •   Tim0th1    8 年前

    将访问数据库读取为熊猫数据帧(Windows)。

    这是一个非常快速简单的解决方案,我已经成功地用于较小的数据库。

    您可以通过创建一个指向Excel的永久链接并保存该文件(只需单击几次)来读取Access数据库,链接方式如下:

    https://support.office.com/en-gb/article/Connect-an-Access-database-to-your-workbook-a3d6500c-4bec-40ce-8cdf-fb4edb723525

    然后您可以简单地将该Excel文件作为熊猫数据帧读取。

    例如,将链接的Excel文件保存为location\filestore\subfolder1\subfolder中的“link_to_master.xlsx”。

    在python中运行以下命令:

    import pandas as pd
    import os
    os.chdir('\\\\FileStore\\subfolder1\\subfolder') #sets the folder location
    df = pd.read_excel('link_to_master.xlsx') # reads the Excel file
    df
    

    如果您正在访问python脚本,请考虑刷新链接的频率。也就是说,Excel和Access之间的链接是静态的。

        9
  •  1
  •   Nico    16 年前

    最有可能的是,您需要使用一个很好的框架,比如 SQLAlchemy 要访问您的数据,或者至少,我会推荐它。 Support for Access 是“实验性的”,但我记得使用它时没有太多问题。它本身使用 pyodbc 在引擎盖下连接到AccessDBS,所以它应该可以在Windows、Linux、OSX等环境下工作。

        10
  •  0
  •   apenwarr    16 年前

    如果使用 EQL Data ,然后可以使用json或yaml查询访问表的内容: http://eqldata.com/kb/1002 .

    那篇文章是关于PHP的,但是它在Python中也能很好地工作。

        11
  •  0
  •   ankostis    10 年前

    如果您还有时间,可以尝试修复并更新通过本机com32客户机API读取MS Access DBS的python类: Extraction and manipulation class for Microsoft Access

        12
  •  0
  •   combuilder    8 年前

    我在Windows下将python连接到MS Access的方法是使用以下方法: Connect to MS Access with Python . 也许你会在Win7中发现一些问题,所以我找到了一个解决方案: Solving a connection between MS Access and Python on Windows 7

    我还没有尝试在Linux下连接!