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

如何用Python连接SharePoint上的Access数据库并执行数据操作

解决Python连接SharePoint上Access数据库的问题

首先得明确:你直接用SharePoint的HTTPS URL写连接字符串是行不通的——Microsoft Access ODBC驱动不支持直接通过HTTP/HTTPS路径访问数据库文件,它只能识别本地文件路径或者Windows网络共享(SMB)的路径。

下面给你两种可行的解决方案:

方案1:先下载文件到本地,再连接本地副本

这是最通用的方法,不管你用什么操作系统都能跑。核心思路是先把SharePoint上的Access文件下载到本地临时目录,再用pyodbc连接本地文件。

示例代码(含文件下载与数据库操作)

import pyodbc
import requests
import tempfile
import os

# 1. 下载SharePoint上的Access文件到临时目录
sharepoint_db_url = "https://xxxxxxxxxxxx.sharepoint.com/sites/xxxxx/Shared%20Documents/General/test.accdb"

# 注意:如果你的SharePoint站点需要登录认证,得额外处理(比如用requests_ntlm或office365-rest-python-client库)
# 这里先假设是可直接下载的公开链接,或你已通过其他方式完成认证
response = requests.get(sharepoint_db_url)
response.raise_for_status()  # 如果下载失败直接抛出错误

# 创建临时文件保存下载的数据库
with tempfile.NamedTemporaryFile(suffix=".accdb", delete=False) as temp_file:
    temp_file.write(response.content)
    local_db_path = temp_file.name

try:
    # 2. 连接本地临时数据库文件
    conn_str = f'Driver={{Microsoft Access Driver (*.mdb, *.accdb)}};DBQ={local_db_path};'
    conn = pyodbc.connect(conn_str, autocommit=True)
    print("数据库连接成功!")

    # 这里执行你的数据操作,比如查询数据
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM YourTableName")
    for row in cursor.fetchall():
        print(row)

    # 如果你需要修改数据,记得commit(如果autocommit=False的话)
    # cursor.execute("INSERT INTO YourTableName (Col1) VALUES ('Test Data')")
    # conn.commit()

finally:
    # 3. 操作完成后清理资源
    conn.close()
    os.unlink(local_db_path)  # 删除临时文件

如果你的SharePoint是企业版需要复杂认证,推荐用office365-rest-python-client库来处理文件下载,它专门适配SharePoint Online的API,能更方便地处理登录权限问题。

方案2:Windows环境下映射SharePoint为网络驱动器

如果你是在Windows系统上跑脚本,可以把SharePoint的文档库映射成一个本地网络驱动器(比如Z盘),这样就能像访问本地文件一样用映射路径连接。

操作步骤:

  1. 打开文件资源管理器,右键点击「此电脑」→「映射网络驱动器」
  2. 在「文件夹」输入框中,填入SharePoint文档库的SMB路径:\\xxxxxxxxxxxx.sharepoint.com@SSL\DavWWWRoot\sites\xxxxx\Shared Documents
  3. 勾选「登录时重新连接」,点击完成,按照提示登录你的SharePoint账号

连接代码示例

import pyodbc

# 用映射的网络驱动器路径写连接字符串
conn_str = r'Driver={{Microsoft Access Driver (*.mdb, *.accdb)}};DBQ=Z:\General\test.accdb;'
conn = pyodbc.connect(conn_str, autocommit=True)

# 执行数据操作
cursor = conn.cursor()
cursor.execute("UPDATE YourTableName SET Col1 = 'Updated' WHERE ID = 1")
conn.commit()

conn.close()

补充说明:原连接字符串失效的原因

Access ODBC驱动是为本地文件和局域网共享设计的,SharePoint的HTTPS URL属于WebDAV协议的远程路径,驱动无法直接解析这种格式的地址,必须先把文件转化为本地可识别的路径(本地文件或SMB共享)才能正常建立连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 20:07:36