首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将MDB文件导入Mac上的Python (pandas)

问将MDB文件导入Mac上的Python (pandas)
EN

Stack Overflow用户
提问于 2019-04-23 01:14:16
回答 4查看 2.1K关注 0票数 1

我在mac上运行python 3.6。我已经下载了一个mdb文件,但没有Microsoft access,我想将每个表导入到python中并在那里使用它。

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

代码语言:javascript
复制
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‘

我也试过了,但得到了相同的错误:

代码语言:javascript
复制
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。

谢谢你的帮助。

EN

回答 4

Stack Overflow用户

发布于 2020-06-17 03:43:33

我刚刚确认以下方法适用于当前版本的pandas、JayDeBeApi和UCanAccess JDBC驱动程序。有关如何设置Java/UCanAccess环境的详细信息,请参阅this answer。

代码语言:javascript
复制
import jaydebeapi
import pandas as pd

db_path = "/home/gord/UCanAccessTest.accdb"

ucanaccess_jars = [
    "/home/gord/Downloads/JDBC/UCanAccess/ucanaccess-5.0.0.jar",
    "/home/gord/Downloads/JDBC/UCanAccess/lib/commons-lang3-3.8.1.jar",
    "/home/gord/Downloads/JDBC/UCanAccess/lib/commons-logging-1.2.jar",
    "/home/gord/Downloads/JDBC/UCanAccess/lib/hsqldb-2.5.0.jar",
    "/home/gord/Downloads/JDBC/UCanAccess/lib/jackcess-3.0.1.jar",
]
classpath = ":".join(ucanaccess_jars)
cnxn = jaydebeapi.connect(
    "net.ucanaccess.jdbc.UcanaccessDriver",
    f"jdbc:ucanaccess://{db_path}",
    ["", ""],
    classpath,
)

df = pd.read_sql_query("SELECT * FROM Clients", cnxn)
print(df)
"""console output:
   ID      LastName FirstName                  DOB
0   1      Thompson      Gord  2017-04-01 07:06:27
1   2        Loblaw       Bob  1996-09-12 16:03:00
"""

请注意,这适用于从Access读取到pandas,但对于使用to_sql写回Access,不适用于。

票数 1
EN

Stack Overflow用户

发布于 2019-04-23 17:15:27

我有一个使用R而不是Python的变通方法。我引用了这篇文章中的材料:https://medium.com/@wenyu.z/reading-ms-access-mdb-files-on-mac-969a176baa7a。

首先,在终端运行中:brew install mdbtools。请注意,这需要已经安装了自制软件。

其次,在R中运行以下代码:

代码语言:javascript
复制
library(Hmisc)
data <- mdb.get('avroll_19.mdb')

当然,将avroll_19.mdb替换为您的数据库文件名。

票数 0
EN

Stack Overflow用户

发布于 2020-06-16 17:26:18

我也得到了相同的文件找不到错误。这是因为我的access数据源是旧的32位.mdb,而我的python是64位。

它在32位机器上工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55798239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档