猿问

在 Mac 上将 MDB 文件导入 Python (pandas)

我在 Mac 上运行 python 3.6。我已经下载了一个 mdb 文件,但没有 Microsoft 访问权限,我想将每个表导入 python 并在那里使用它。


我已经安装了 mdbtools 并从 Spyder 运行以下命令:


import pandas as pd

import subprocess

import os


os.chdir('<directory where mdb file is>')


def show_tables(path='avroll_19.mdb'):

    tables = subprocess.check_output(["mdb-tables", path])

    return tables.decode().split()


show_tables()

我收到此错误:FileNotFoundError: [Errno 2] No such file or directory: 'mdb-tables': 'mdb-tables'


我也试过这个,但得到同样的错误:


import pandas_access as mdb

for tbl in mdb.list_tables('avroll_19.mdb'):

    print(tbl)

我在 Anaconda 中使用 Sypder,我不确定这是否是一个问题。


mdb 文件位于此处:https ://www1.nyc.gov/assets/finance/downloads/tar/avroll_20.zip


我也尝试使用 pyodbc 来执行此操作,但是,它所需的驱动程序似乎不适用于 mac。


谢谢您的帮助。


慕运维8079593
浏览 441回答 3
3回答

跃然一笑

我刚刚确认以下方法适用于当前版本的pandas、JayDeBeApi和UCanAccess JDBC 驱动程序。有关如何设置 Java/UCanAccess 环境的更多详细信息,请参阅此答案。import jaydebeapiimport pandas as pddb_path = "/home/gord/UCanAccessTest.accdb"ucanaccess_jars = [&nbsp; &nbsp; "/home/gord/Downloads/JDBC/UCanAccess/ucanaccess-5.0.0.jar",&nbsp; &nbsp; "/home/gord/Downloads/JDBC/UCanAccess/lib/commons-lang3-3.8.1.jar",&nbsp; &nbsp; "/home/gord/Downloads/JDBC/UCanAccess/lib/commons-logging-1.2.jar",&nbsp; &nbsp; "/home/gord/Downloads/JDBC/UCanAccess/lib/hsqldb-2.5.0.jar",&nbsp; &nbsp; "/home/gord/Downloads/JDBC/UCanAccess/lib/jackcess-3.0.1.jar",]classpath = ":".join(ucanaccess_jars)cnxn = jaydebeapi.connect(&nbsp; &nbsp; "net.ucanaccess.jdbc.UcanaccessDriver",&nbsp; &nbsp; f"jdbc:ucanaccess://{db_path}",&nbsp; &nbsp; ["", ""],&nbsp; &nbsp; classpath,)df = pd.read_sql_query("SELECT * FROM Clients", cnxn)print(df)"""console output:&nbsp; &nbsp;ID&nbsp; &nbsp; &nbsp; LastName FirstName&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DOB0&nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; Thompson&nbsp; &nbsp; &nbsp; Gord&nbsp; 2017-04-01 07:06:271&nbsp; &nbsp;2&nbsp; &nbsp; &nbsp; &nbsp; Loblaw&nbsp; &nbsp; &nbsp; &nbsp;Bob&nbsp; 1996-09-12 16:03:00"""请注意,这适用于从 Access读取到 pandas,但不适用于使用to_sql.

小怪兽爱吃肉

我也收到相同的文件未找到错误。这是因为我的访问数据源是旧的 32 位 .mdb 而我的 python 是 64 位。它在 32 位机器上工作

婷婷同学_

我有一个使用 R 而不是 Python 的解决方法。我从这篇文章中引用了材料:https&nbsp;://medium.com/@wenyu.z/reading-ms-access-mdb-files-on-mac-969a176baa7a 。首先,在终端运行:brew install mdbtools.&nbsp;请注意,这要求已经安装了自制软件。其次,在 R 中运行:library(Hmisc) data&nbsp;<-&nbsp;mdb.get('avroll_19.mdb')当然,用您的数据库文件名替换 avroll_19.mdb。
随时随地看视频慕课网APP

相关分类

Python
我要回答