"你是否曾想过如何在你的Python脚本中访问微软SharePoint?
本教程正是针对这个问题。 你将能够通过使用一个叫做Connect Bridge的工具,以一种简单的方式来完成。"
最初发布于:2019年7月10日
最后更新:2026年10月14日
简而言之
- 功能说明: 允许 Python 脚本通过 ODBC 和
pyodbc模块。. - 方法: 一款商用工具 Connect Bridge(提供免费试用版)位于 Python 和 SharePoint 之间,将 SharePoint API 呈现为数据库的形式。.
- 你需要准备: 一台 Windows 电脑,Python 3,,
pyodbc, Connect Bridge(已配置 SharePoint 账户),以及它生成的 ODBC 连接字符串。. - 您将获得: 一个约15行的核心脚本,以及用于创建列表、插入记录以及上传和下载文档的SQL和存储过程示例。.
- 注意事项: 仅限 Windows 系统(经作者测试);商业许可证。.
- 最适合 那些习惯用 SQL 进行思考,且希望避免直接学习 SharePoint API 的团队。.
目录
介紹
本文介绍了如何制作 Python连接到SharePoint, ,即如何通过 Python 脚本访问 Microsoft SharePoint 系统(2013、2016、2019 或 Online)中的数据。数据传输通过 ODBC 层进行。.
更新说明:本文中的示例最初是在 2019–2022 年间使用 Python 3.7 构建和测试的,并且 pyodbc模块 版本 4.0.26。2026 年 10 月,我们简化了该脚本,并针对 Python 3.14 和 pyodbc 5.3.0 重写了其错误处理逻辑。如果您的环境中出现行为异常的情况,请在评论中告知我们。.
需要注意的是,在本文中,我们使用的是一款名为Connect Bridge的商业产品。事实上,这就是Python / SharePoint集成的原因,通过允许数据通信的方式,你可以确信你不会弄乱SharePoint方面(相信我,这非常重要)。您可以 获得免费试用 为Connect Bridge,所以你可以亲自尝试这些。
这个 "Connect Bridge "是什么?
我很高兴你问了这个问题! Connect Bridge 是一个由Connecting Software开发的集成平台,允许你通过ODBC驱动、JDBC驱动或Web服务连接任何软件。该工具的架构的总体概况在这个客户-服务器方案图上。
(opens in a new tab)Connect Bridge 集成平台架构
正如你在架构图上看到的那样,该工具不仅可以用于从Python脚本中访问微软SharePoint数据,还可以从微软Exchange和微软Dynamics CRM中抓取/输入数据。
我们工作的目的是创建一个Python脚本,使我们能够通过Connect Bridge与SharePoint对话。
我们使用SharePoint,但也可以使用类似的逻辑来连接到 微软Exchange 或到像Salesforce或Dynamics这样的CRM。
开始吧...
现在让我们开始这个教程吧!我们的目标是创建一个简单的Python脚本,访问一个SharePoint实例。我们假设SharePoint实例已经存在(请确保你手头有你的登录凭证)。这些是你需要遵循的简单步骤。
1.申请 免费试用 并安装Connect Bridge
2. 安装 适用于Windows的Python 3.14 及以上版本。请注意,为了更方便编写、运行和调试我的脚本,我们使用了 Liclipse 12.0.1 版本,搭配 pydev 插件,但这当然是可选的。任何编辑器都可以,例如 VS Code 或 PyCharm。.
3. 安装 pyodbc模块 5.3.0+
4. 运行Connect Bridge管理工作室和
4.1. 为SharePoint添加一个账户(账户-添加账户)。在这里,你将需要我们前面提到的那些凭证。
4.2. 打开 新查询 选项,然后是 连接浏览器.找到 SharePoint连接器 并打开它,直到你看到 默认连接.右键单击它并选择 获取连接字符串.然后复制ODBC的连接字符串。你将需要它来把它传递给脚本。
4.3. 使用 "新建查询 "选项来测试一个查询,该查询将访问你在SharePoint中需要的内容。我们将在这里做一个查询的例子,但你应该在这里输入你在SharePoint中寻找的东西。一旦你点击了 新查询,打开 连接浏览器.找到 SharePoint连接器 并打开它,直到你看到 桌子 选项。你会发现模式中包含一个名为 Site_Pages 的 “表”,因此我们可以将查询构造为
SELECT UniqueId, ContentType, Created, Modified, ContentVersion FROM Site_Pages LIMIT 10;
来选择SharePoint的前10个条目。 网站页面 列表。需要注意的是,尽管看起来我们好像直接使用了一个数据库,但事实并非如此。
Connect Bridge 会调用 API,然后将其呈现为数据库的形式。获取查询语句后,请将其复制下来,因为您还需要将其传递给脚本。.
手把手教你写脚本!
我们解决方案中的核心文件,同时也是唯一的文件是CBQuery.py。完整的源代码在下面。请关注第70-92行,它描述了核心解决方案。下面是关于这个脚本如何工作的完整描述。
#!/usr/bin/env python3
# 编码:utf-8
"""
CBQuery -- 从 SharePoint 查询数据,向 SharePoint 写入数据
通过 Connect Bridge ODBC 驱动程序执行 SQL 查询。
@author: Ana Neto
@created: 2019-07-04
@updated: 2026-10-14
"""
import sys
from argparse import ArgumentParser
from contextlib import closing
import pyodbc
def main():
parser = ArgumentParser(description=__doc__)
parser.add_argument("connstr", help="来自 Connect Bridge Management Studio 的 ODBC 连接字符串")
parser.add_argument("query", help="要执行的 SQL 查询或 EXEC 语句")
args = parser.parse_args()
try:
# 完成后关闭连接
with closing(pyodbc.connect(args.connstr)) as conn:
cursor = conn.cursor()
cursor.execute(args.query)
if cursor.description is None:
# 未返回任何结果行
conn.commit()
print("OK")
else:
for row in cursor:
print(row)
conn.commit()
return 0
except KeyboardInterrupt:
return 130
except pyodbc.Error as err:
print(f"ODBC 错误:{err}", file=sys.stderr)
return 2
if __name__ == "__main__":
sys.exit(main())这是我们的脚本在做什么。
- 该
argparse该代码块读取两个命令行参数,,connstr(ODBC 连接字符串)以及查询. - 变量 connstr 存储了我们传递给 pyodbc 模块以建立 ODBC 连接的 ODBC 连接字符串(存储在
涵养变量)。该连接被封装在contextlib.closing, 因此当代码块结束时,它总是会被关闭,即使发生了错误也是如此。. - 接下来,我们使用存储在 conn 中的连接打开一个数据库游标
- 我们执行该 SQL 查询(即通过名为 query 的命令行参数传递的查询)
- 如果语句返回了多行数据,我们会遍历游标,逐行读取结果,并打印每一行原始数据。这是我们在本演示中采用的方法,但请注意,输出形式可以是任何类型……我们可以将其格式化为 XML、JSON、CSV……或任何其他数据交换格式。 我们也可以直接在后续代码中使用原始数据行对象来执行自定义任务。.
- 如果该语句未返回任何行(INSERT,EXEC),则脚本将输出“OK”。.
- 在这两种情况下,事务都会被显式提交,因此由 INSERT 语句和存储过程所做的更改都会被保存下来。.
- ODBC 错误将输出到 stderr,脚本将以代码 2 退出。按 Ctrl+C 退出时返回代码 130,成功退出时返回 0。.
运行CBQuery.py脚本
CBQuery.py 接受两个位置型命令行参数:connstr 和 query。.
我们需要按照上文所述(第4点),从Connect Bridge Management Studio中复制这些内容 开始 节)。)
然后按以下方式运行该脚本:
python CBQuery.py "" "SELECT UniqueId, ContentType FROM Site_Pages LIMIT 10;"
现在假设我们想在 SharePoint 中创建一个联系人列表,并在该列表中创建一个联系人。.
我们基本上需要遵循相同的流程,但需要将查询改为使用“存储过程”。 同样,这个“存储过程”实际上仍将通过 API 访问 SharePoint,但它会将数据写入您指定的 SharePoint 中。以下是我们需要执行的查询:
EXEC SP_CREATE_TABLE 'MyContacts', '此表是使用 Connect Bridge 创建的', true, 'Contacts';
这些参数的顺序依次为:新列表的名称(我的联系人); 描述;一个布尔标志 (真); 以及作为基础的 SharePoint 列表模板(联系我们).
该查询创建了一个新的SharePoint列表(MyContacts),其描述将显示在SharePoint页面的快速启动栏中。
现在,我们需要调用以下查询,以更新 Connect Bridge ODBC 架构中对 SharePoint 架构的映射。这样,我们的新“表”就会对 ODBC 客户端可见。(此存储过程不带参数。)
EXEC SP_UPDATE_SCHEMA;
在这一点上,我们可以在联系人列表中插入一个联系人条目。
INSERT INTO MyContacts (FirstName, LastName) VALUES ('Ana', 'Neto');
现在您应该可以在SharePoint用户界面上看到我们的条目和我们新的SharePoint列表。
我们可以通过运行以下查询选择我们刚刚创建的条目。
SELECT FirstName,LastName FROM MyContacts
要上传共享文档,我们将使用现有的 SharePoint 列表“Documents”以及“存储过程”SP_INSERT_SHAREDDOCUMENT。该存储过程接受的参数如下:
- 共享文档表名
- 文件名
- 文件夹(相对路径,位于服务器上)
- MIME类型
- 该文件的数据(Base64编码;在下文示例中,,
SGVsbG8gV29ybGQ=(即“Hello World”这行文字)
我们可以通过运行以下语句来插入文档。
EXEC SP_INSERT_SHAREDDOCUMENT
'文档',
'hello2.txt',
'/共享文档/新文件夹',
'text/plain',
'SGVsbG8gV29ybGQ=';
如果您想事先检查该文件夹是否存在,可以运行以下语句。其参数为文档库名称和相对文件夹路径:
EXEC SP_ENSURE_FOLDER_PATH
'Documents',
'/NewFolder';
运行 SP_INSERT_SHAREDDOCUMENT 之后,我们可以通过运行语句来检查 “文档 ”表中是否存在该文档:
SELECT Id,Name FROM Documents;
我们还可以通过运行以下语句,从特定的文档库中下载特定文档的二进制内容: 如下所示。其参数为库名和文档的 ID,由上文中的 SELECT 返回:
EXEC SP_SAVE_SHAREDDOCUMENT_BY_ID 'Documents', 2;
此时,您可以在 SharePoint 用户界面中检查共享文档是否存在。.
限制因素
到目前为止,我们只能在 Windows 操作系统上使用 Connect Bridge 工具,因为目前尚无适用于 Linux 的 ODBC 客户端库(而且我们也不确定这是否可行)。因此,请务必在 Windows 机器上测试您的 Python 脚本。.
结论
我们已经看到,借助 Connect Bridge 集成平台,在 Python 中访问 SharePoint 数据是多么简单。 现在试想一下,本文中介绍的功能在 Microsoft Dynamics CRM 和 Microsoft Exchange 中同样可以实现!没错,借助 Connect Bridge 完全可以做到,而且操作方法也类似。.
我可以向谁咨询问题?

作者 Ana Neto, 技术顾问 于 Connecting Software。
"自 1997 年以来,我一直是一名软件工程师,最近开始喜欢写作和公开演讲。您对本文有任何问题或评论吗?欢迎在下方留言!"

Comments 1
谢谢你的清晰解释!"。