"Você já se perguntou como acessar o Microsoft SharePoint em seus scripts Python?
Este tutorial aborda exatamente isso: você será capaz de fazê-lo de uma maneira fácil, usando uma ferramenta chamada Connect Bridge".
Publicado originalmente a 10 de julho de 2019
Última atualização: 14 de outubro de 2026
Resumo
- O que faz: permite que um script em Python leia e escreva listas SharePoint e bibliotecas de documentos utilizando SQL simples, através do ODBC e do
pyodbcmódulo. - Como: Uma ferramenta comercial, a Connect Bridge (com versão de avaliação gratuita disponível), funciona como um intermediário entre o Python e a SharePoint e apresenta a API da SharePoint como se fosse uma base de dados.
- O que precisas: um computador com Windows, Python 3,
pyodbc, Connect Bridge com uma conta SharePoint configurada e a cadeia de ligação ODBC que esta gera. - O que recebe: um script principal com cerca de 15 linhas, além de exemplos de SQL e procedimentos armazenados para criar listas, inserir registos e carregar e descarregar documentos.
- Advertências: Apenas para Windows (conforme testado pelo autor); licença comercial.
- Melhor para: equipas que pensam em SQL e querem evitar aprender diretamente a API do SharePoint.
Índice
Introdução
Este artigo descreve como fazer Python ligar ao SharePoint, ou seja, como aceder aos dados dos sistemas Microsoft SharePoint (2013, 2016, 2019 ou Online) a partir de scripts na linguagem Python. As transferências de dados são efetuadas através da camada ODBC.
Nota de atualização: Os exemplos deste artigo foram originalmente criados e testados entre 2019 e 2022 com o Python 3.7 e módulo de pyodbc versão 4.0.26. Em outubro de 2026, simplificámos o script e reescrevemos o seu tratamento de erros para o Python 3.14 e o pyodbc 5.3.0. Se algo se comportar de forma diferente no seu ambiente, por favor, informe-nos nos comentários.
É importante notar que neste artigo utilizamos um produto comercial chamado Connect Bridge. Isto é, de facto, o que torna possível a integração Python / SharePoint, ao permitir a comunicação de dados de uma forma que de certeza não compromete a integrida do lado do SharePoint (e, acredite em mim, isto é MUITO importante). Pode iniciar um período de teste gratuito com o Connect Bridge, para que possa experimentar tudo isto por si mesmo.
O que é este "Connect Bridge"?
Fico contente por teres perguntado! Connect Bridge é uma plataforma de integração desenvolvida pelo Connecting Software que permite conectar qualquer software através de drivers ODBC, drivers JDBC ou Web Services. A visão geral da arquitetura da ferramenta está neste diagrama de cenário cliente-servidor.
(opens in a new tab)Connect Bridge arquitetura da plataforma de integração
Como pode ver no diagrama, a ferramenta pode ser usada para aceder não apenas aos dados do Microsoft SharePoint a partir do seu script Python, mas também pode ir buscar/portar dados de/para o Microsoft Exchange e Microsoft Dynamics CRM, entre muitos outros.
O objectivo do nosso trabalho era criar um script Python que nos permitisse falar com o SharePoint via Connect Bridge.
Nós usamos SharePoint, mas é possível usar lógica similar para conectar a Microsoft Exchange ou a um CRM como o Salesforce ou Dynamics.
A começar...
Agora vamos começar este tutorial! Nosso objetivo é criar um script Python simples que acesse uma instância de SharePoint. Assumimos que a instância SharePoint já existe (certifique-se que tem as suas credenciais de login em mãos). Estes são passos simples que você precisa seguir:
1. Peça uma avaliação gratuita e instale o Connect Bridge
2. Instale o Python para Windows versão 3.14+. Tenha em atenção que, para facilitar a escrita, a execução e a depuração do meu script, utilizámos Liclipse 12.0.1 com o plugin pydev, mas isto é, obviamente, opcional. Qualquer editor serve, como o VS Code ou o PyCharm.
3. Instale o módulo de pyodbc 5.3.0+
4. Execute o Connect Bridge Management Studio e
4.1. Adicionar uma conta para SharePoint (Contas - Adicionar conta). Aqui é onde você vai precisar das credenciais que mencionamos anteriormente.
4.2. Abra o Nova Consulta e depois a opção Navegador de Conexão. Encontre o Conector SharePoint e abra-o até ver o DefaultConnection. Clique com o botão direito do mouse sobre ele e escolha Obter cadeia de ligação. Depois copie a cadeia de ligação ODBC. Você vai precisar dela para passá-la para o script.
4.3. Use a opção Nova Consulta para testar uma consulta que irá acessar o que você precisa no SharePoint. Vamos fazer uma consulta de exemplo aqui, mas é aqui que deve colocar o que procura no SharePoint. Uma vez que você tenha clicado em Nova Consultaabra o Navegador de Conexão. Encontre o Conector SharePoint e abra-o até ver o Tabelas opção. Verá que o esquema contém uma "tabela" chamada Site_Pages, pelo que podemos construir a nossa consulta como
SELECT UniqueId, ContentType, Created, Modified, ContentVersion FROM Site_Pages LIMIT 10;
para seleccionar as 10 primeiras entradas de SharePoint's Páginas do site lista. É importante notar que embora pareça que estamos usando uma base de dados diretamente, não é o caso.
O Connect Bridge acede à API e, em seguida, apresenta-a como se fosse uma base de dados. Assim que tiver a sua consulta, copie-a, pois também vai precisar dela para a passar para o script.
Finalmente o script de Python!
O núcleo e, ao mesmo tempo, o único arquivo em nossa solução é o CBQuery.py. O código fonte completo está abaixo. Por favor, concentre-se nas linhas 70-92 que retratam a solução do núcleo. Uma descrição completa de como este script funciona está abaixo.
#!/usr/bin/env python3
# codificação: utf-8
"""
CBQuery — consultar dados e gravar dados no SharePoint
Executa consultas SQL através do controlador ODBC do Connect Bridge.
@autor: Ana Neto
@criado: 2019-07-04
@atualizado: 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="Cadeia de ligação ODBC do Connect Bridge Management Studio")
parser.add_argument("query", help="Consulta SQL ou instrução EXEC a executar")
args = parser.parse_args()
try:
# Fechar a ligação quando terminar
with closing(pyodbc.connect(args.connstr)) as conn:
cursor = conn.cursor()
cursor.execute(args.query)
if cursor.description is None:
# Não foram devolvidas linhas de resultados
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"Erro ODBC: {err}", file=sys.stderr)
return 2
if __name__ == "__main__":
sys.exit(main())Aqui está o que o nosso script está a fazer:
- O
argparseO bloco lê os dois argumentos da linha de comandos,connstr(a cadeia de ligação ODBC) econsulta. - A variável `connstr` contém a cadeia de ligação ODBC que passamos ao módulo `pyodbc` para criar uma ligação ODBC (armazenada no
connvariável). A ligação está envolvida emcontextlib.closing, pelo que fica sempre fechado quando o bloco termina, mesmo que ocorra um erro. - Como próximo passo, abrimos um cursor da base de dados utilizando a ligação guardada em conn
- Executamos a consulta SQL (esta é a consulta que foi passada através do parâmetro da linha de comandos denominado «query»)
- Se a instrução devolver linhas, percorremos o cursor e lemos os resultados linha a linha, apresentando cada linha tal como está. Esta foi a nossa escolha para esta demonstração, mas note-se que poderia ser qualquer tipo de saída… poderíamos formatá-la como XML, JSON, CSV… ou qualquer outro tipo de formato de intercâmbio de dados. Também poderíamos simplesmente utilizar o objeto de linha de dados brutos em código posterior para realizar tarefas personalizadas.
- Se a instrução não devolver quaisquer linhas (INSERT, EXEC), o script apresenta “OK”.
- Em ambos os casos, a transação é confirmada explicitamente, pelo que as alterações efetuadas pelas instruções INSERT e pelos procedimentos armazenados são guardadas.
- Os erros ODBC são enviados para o stderr e o script termina com o código 2. A combinação Ctrl+C encerra o script com o código 130, e a execução bem-sucedida termina com o código 0.
Executando o script CBQuery.py
O CBQuery.py aceita dois argumentos posicionais na linha de comandos: connstr e query.
Temos de copiar estes dados do Connect Bridge Management Studio, tal como explicado acima (ponto 4 do Como começar secção).
Em seguida, execute o script da seguinte forma:
python CBQuery.py "" "SELECT UniqueId, ContentType FROM Site_Pages LIMIT 10;"
Suponhamos agora que queremos criar uma lista de contactos na tabela SharePoint e criar um contacto nessa lista.
Basicamente, temos de seguir o mesmo processo, mas alterar a consulta para utilizar um “procedimento armazenado”. Mais uma vez, este “procedimento armazenado” irá, na verdade, aceder ao SharePoint através da API, mas está a inserir os dados no SharePoint que especificou. Eis a consulta que precisamos de executar:
EXEC SP_CREATE_TABLE 'MyContacts', 'This table was created using Connect Bridge', true, 'Contacts';
Os parâmetros, por ordem, são: o nome da nova lista (Os meus contactos); uma descrição; um indicador booleano (Verdadeiro); e o modelo de lista SharePoint no qual se basear (Contatos).
A consulta cria uma nova lista do SharePoint (MyContacts), com uma descrição que aparecerá na barra de lançamento rápido da página do SharePoint.
Agora, precisamos de executar a seguinte consulta para atualizar a reflexão do esquema ODBC Connect Bridge de acordo com o esquema SharePoint. Assim, a nossa nova “tabela” fica visível para o cliente ODBC. (Este procedimento não requer parâmetros.)
EXECUTE SP_UPDATE_SCHEMA;
Neste ponto, podemos inserir uma entrada de contacto na nossa lista de contactos.
INSERT INTO MyContacts (FirstName, LastName) VALUES ('Ana', 'Neto');
Deverá agora poder ver a nossa entrada e a nossa nova lista do SharePoint entrando no SharePoint.
Podemos selecionar a entrada que acabamos de criar, executando a seguinte consulta.
SELECT FirstName,LastName FROM MyContacts
Para carregar um documento partilhado, iremos utilizar a lista “Documentos” existente SharePoint e o “Procedimento Armazenado” SP_INSERT_SHAREDDOCUMENT. Os parâmetros que este aceita são:
- Nome da tabela de documentos partilhados
- Nome do ficheiro
- Pasta (caminho relativo, no servidor)
- Tipo MIME
- Dados do ficheiro (codificados em Base64; no exemplo abaixo,
SGVsbG8gV29ybGQ=é simplesmente o texto “Hello World”)
Podemos inserir o documento executando a seguinte declaração:
EXEC SP_INSERT_SHAREDDOCUMENT
'Documentos',
'hello2.txt',
'/Documentos Partilhados/NovaPasta',
'text/plain',
'SGVsbG8gV29ybGQ=';
Se quiser verificar previamente se a pasta existe, pode executar a instrução abaixo. Os seus parâmetros são o nome da biblioteca de documentos e o caminho relativo da pasta:
EXEC SP_ENSURE_FOLDER_PATH
'Documentos',
'/NovaPasta';
Depois de executar o SP_INSERT_SHAREDDOCUMENT, podemos verificar a presença do documento na tabela "Documents" executando a instrução:
SELECT Id,Name FROM Documents;
Também podemos descarregar o conteúdo binário de um determinado documento a partir de uma determinada biblioteca de documentos, executando a instrução abaixo. Os seus parâmetros são o nome da biblioteca e o ID do documento, tal como devolvidos pela função SELECT acima:
EXEC SP_SAVE_SHAREDDOCUMENT_BY_ID 'Documents', 2;
Nesta altura, pode verificar se o documento partilhado existe na interface do utilizador do SharePoint.
Restrições
Até agora, só temos conseguido utilizar a ferramenta Connect Bridge a partir de sistemas operativos Windows, uma vez que não existe nenhuma biblioteca cliente ODBC disponível para Linux (e nem sequer temos a certeza de que isso seja possível). Por isso, certifique-se de que testa os seus scripts Python numa máquina com Windows.
Conclusão
Vimos como é possível aceder facilmente aos dados do SharePoint em Python utilizando a plataforma de integração Connect Bridge. Agora imagine que o que viu neste artigo também é possível com o Microsoft Dynamics CRM e o Microsoft Exchange! Sim, com o Connect Bridge isso é possível e o procedimento é semelhante.
A quem posso dirigir-me para fazer perguntas?

Por Ana Neto, consultor técnico em Connecting Software.
"Sou engenheiro de software desde 1997, com uma paixão mais recente pela escrita e por falar em público. Tem alguma pergunta ou comentário sobre este artigo? Gostaria muito de receber o seu feedback, deixe um comentário abaixo!"

Comments 1
Obrigado pela explicação clara!