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

使用Python访问SharePoint List失败的问题求助

解决SharePoint List数据提取的COM错误问题

问题核心

使用pywin32的win32com.client连接SharePoint List时,家用电脑及多列表查询场景出现pywintypes.com_error,提示找不到列表对象,但办公电脑可正常运行。

针对性解决方案

1. 家用电脑的认证与权限校验

  • 确保家用电脑已通过浏览器登录对应SharePoint租户账号,保持会话活跃(办公电脑因域环境自动完成认证,家用电脑需手动触发)。
  • 确认当前账号拥有目标列表的读取权限,可通过浏览器直接访问列表验证。

2. 统一ACE驱动版本与位数

  • 家用电脑需安装与办公电脑一致的Microsoft Access Database Engine版本,且驱动位数(32/64位)必须与Python版本匹配(如Python为64位则安装64位驱动)。
  • 驱动安装完成后重启电脑,确保COM组件注册生效。

3. 修正连接字符串与列表标识

  • 替换list_name中的{LIST_ID}为列表的显示名称,ID在跨环境下可能存在差异,显示名称更稳定。
  • 检查site_url的准确性,确保末尾斜杠保留,指向正确的站点根路径。

4. 多列表查询优化:复用连接对象

频繁创建新连接易引发COM资源问题,复用单个连接处理多个列表:

import win32com.client

site_url = "https://tenant.sharepoint.com/sites/path/"
target_lists = ["列表A", "列表B"]

# 初始化单个连接
conn = win32com.client.Dispatch('ADODB.Connection')
conn_str = (
    "Provider=Microsoft.ACE.OLEDB.12.0;"
    "WSS;IMEX=1;RetrieveIds=Yes;"
    f"DATABASE={site_url};"
)
conn.Open(conn_str)

# 批量处理列表
for list_name in target_lists:
    rs = win32com.client.Dispatch('ADODB.Recordset')
    rs.Open(f"SELECT * FROM [{list_name}];", conn)
    
    # 提取数据与字段
    records = rs.GetRows()
    fields = [field.Name for field in rs.Fields]
    
    # 此处添加数据处理逻辑
    print(f"完成列表 {list_name} 提取,共 {len(records[0])} 条记录")
    
    rs.Close()

conn.Close()

5. 替代方案:使用SharePoint REST API

若ACE驱动问题无法彻底解决,改用REST API更适配跨环境场景,无需依赖COM组件:

from office365.sharepoint.client_context import ClientContext
from office365.runtime.auth.user_credential import UserCredential

# 配置认证信息
username = "你的租户账号@tenant.com"
password = "你的账号密码"
site_url = "https://tenant.sharepoint.com/sites/path/"

# 初始化上下文并认证
ctx = ClientContext(site_url).with_credentials(UserCredential(username, password))

# 提取单个列表数据
list_obj = ctx.web.lists.get_by_title("列表名称")
items = list_obj.items.get().execute_query()

# 遍历输出数据
for item in items:
    print(item.properties)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:18:10