You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Alpine Linux Docker容器中安装Microsoft Access Driver (*.mdb, *.accdb)

问题描述

查找所有驱动的脚本

我编写了一个用于查找所有pyodbc可用驱动的脚本:

import pyodbc

print([x for x in pyodbc.drivers()])

遇到的问题

在已安装对应驱动的Windows主机上运行该脚本,可以获取到所有x64驱动,输出如下:

> ['SQL Server', 'ODBC Driver 17 for SQL Server', 'Microsoft Access Driver (*.mdb, *.accdb)', 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)', 'Microsoft Access dBASE Driver (*.dbf, *.ndx, *.mdx)', 'Microsoft Access Text Driver (*.txt, *.csv)']

但我使用如下Dockerfile构建镜像运行时,未查询到任何驱动:

FROM python:3.8-alpine

# Add dependencies
RUN apk upgrade
RUN apk add --no-cache curl gcc g++ unixodbc-dev
RUN ln -s /usr/include/locale.h /usr/include/xlocale.h

WORKDIR /app

# Install Python dependencies
COPY requirements.txt ./
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

# Run script
COPY find_drivers.py find_drivers.py
CMD [ "python3", "find_drivers.py" ]

运行输出为空列表:

> []

解决方案

微软官方并未发布适配Linux系统的Microsoft Access ODBC驱动,Linux环境下可使用开源的MDBTools驱动实现对.mdb/.accdb格式文件的访问,根据场景有两种可选方案:

方案一:切换为Debian系基础镜像(推荐,兼容性最优)

Alpine镜像使用musl libc作为运行时库,对开源驱动的兼容性较差,切换为glibc生态的Debian系基础镜像可大幅降低适配成本,对应Dockerfile如下:

FROM python:3.8-slim

# 安装系统依赖
RUN apt update && apt install -y --no-install-recommends \
    unixodbc \
    unixodbc-dev \
    libmdbodbc1 \
    gcc \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

# 安装Python依赖
COPY requirements.txt ./
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

# 启动脚本
COPY find_drivers.py .
CMD [ "python3", "find_drivers.py" ]

构建运行后即可查询到MDBTools驱动,连接Access文件时指定该驱动名称即可。

方案二:保留Alpine基础镜像

如果必须使用Alpine镜像,需要额外安装MDBTools驱动并手动完成ODBC注册,对应Dockerfile如下:

FROM python:3.8-alpine

# 安装系统依赖
RUN apk upgrade --no-cache \
    && apk add --no-cache curl gcc g++ unixodbc unixodbc-dev mdbtools-odbc \
    && ln -s /usr/include/locale.h /usr/include/xlocale.h \
    # 注册MDBTools驱动到ODBC全局配置
    && echo -e "[MDBTools]\nDescription = MDB Tools ODBC Driver\nDriver = /usr/lib/odbc/libmdbodbc.so\nSetup = /usr/lib/odbc/libmdbodbc.so\nFileUsage = 1" >> /etc/odbcinst.ini

WORKDIR /app

# 安装Python依赖
COPY requirements.txt ./
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

# 启动脚本
COPY find_drivers.py .
CMD [ "python3", "find_drivers.py" ]

注意事项

  1. 开源MDBTools驱动对Access新版特性的支持有限,若需使用高级特性建议将服务部署到Windows环境。
  2. 连接Access文件时驱动名称填写MDBTools即可,不要使用Windows下的完整驱动名称。

内容的提问来源于stack exchange,提问作者spike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:54:04