"Vi siete mai chiesti come accedere a Microsoft SharePoint nei vostri script Python?
Questo tutorial si occupa proprio di questo: sarete in grado di farlo in modo semplice utilizzando uno strumento chiamato Connect Bridge".
Pubblicato originariamente il 10 luglio 2019
Ultimo aggiornamento: 14 ottobre 2026
In breve
- Cosa fa: consente a uno script Python di leggere e scrivere elenchi e raccolte di documenti SharePoint utilizzando SQL standard, tramite ODBC e il
pyodbcmodulo. - Come: Uno strumento commerciale, Connect Bridge (disponibile in versione di prova gratuita), funge da ponte tra Python e SharePoint e presenta l'API di SharePoint come se fosse un database.
- Cosa ti serve: un computer con Windows, Python 3,
pyodbc, Connect Bridge con un account SharePoint configurato e la stringa di connessione ODBC che genera. - Cosa riceverai: uno script principale di circa 15 righe, oltre a esempi di SQL e procedure memorizzate per la creazione di elenchi, l'inserimento di record e il caricamento e il download di documenti.
- Avvertenze: Solo per Windows (come verificato dall'autore); licenza commerciale.
- Ideale per: team che ragionano in termini di SQL e vogliono evitare di imparare direttamente l'API SharePoint.
Indice
Introduzione
Questo articolo descrive come fare Python si collega a SharePoint, ovvero come accedere ai dati dei sistemi Microsoft SharePoint (2013, 2016, 2019 o Online) tramite script scritti in Python. Il trasferimento dei dati avviene tramite il livello ODBC.
Nota di aggiornamento: gli esempi riportati in questo articolo sono stati originariamente realizzati e testati nel periodo 2019–2022 con Python 3.7 e modulo pyodbc versione 4.0.26. Nell'ottobre 2026 abbiamo semplificato lo script e riscritto la gestione degli errori per Python 3.14 e pyodbc 5.3.0. Se nel vostro ambiente qualcosa dovesse funzionare in modo diverso, vi preghiamo di segnalarcelo nei commenti.
E' importante notare che in questo articolo utilizziamo un prodotto commerciale chiamato Connect Bridge. Questo è, infatti, ciò che rende possibile l'integrazione Python / SharePoint, permettendo la comunicazione dei dati in modo che siate sicuri di non rovinare il lato SharePoint (e, credetemi, questo è MOLTO importante). È possibile ottenere una prova gratuita per Connect Bridge, in modo da poter provare tutto questo da soli.
Cos'è questo "Connect Bridge"?
Sono contento che tu l'abbia chiesto! Connect Bridge è una piattaforma di integrazione sviluppata da Connecting Software che permette di collegare qualsiasi software attraverso driver ODBC, driver JDBC o servizi web. La panoramica generale dell'architettura dello strumento è su questo diagramma di scenario client-server.
(opens in a new tab)Connect Bridge architettura della piattaforma di integrazione
Come si può vedere nel diagramma dell'architettura, lo strumento può essere utilizzato per accedere non solo ai dati di Microsoft SharePoint all'interno del vostro script Python, ma si possono anche afferrare/immettere dati da/verso Microsoft Exchange e Microsoft Dynamics CRM tra molti altri.
Lo scopo del nostro lavoro era di creare uno script Python che ci permettesse di parlare con SharePoint tramite Connect Bridge.
Noi usiamo SharePoint, ma è possibile usare una logica simile per connettersi a Microsoft Exchange o a un CRM come Salesforce o Dynamics.
Iniziare...
Ora iniziamo questo tutorial! Il nostro obiettivo è quello di creare un semplice script Python che accede a un'istanza SharePoint. Assumiamo che l'istanza SharePoint esista già (assicurati di avere le tue credenziali di accesso a portata di mano). Questi sono semplici passi da seguire:
1. Richiedi un prova gratuita e installare Connect Bridge
2. Installare Pitone per finestre versione 3.14+. Si prega di notare che, per facilitare la scrittura, l'esecuzione e il debug del mio script, abbiamo utilizzato Liclipse 12.0.1 con il plugin pydev, ma questo è, ovviamente, facoltativo. Va bene qualsiasi editor, come VS Code o PyCharm.
3. Installare modulo pyodbc 5.3.0+
4. Eseguire Connect Bridge Management Studio e
4.1. Aggiungi un account per SharePoint (Accounts - Add account). Qui è dove avrai bisogno di quelle credenziali che abbiamo menzionato prima.
4.2. Aprire il Nuova query e poi l'opzione Browser di connessione. Trova il Connettore SharePoint e aprirlo fino a che non vedi il DefaultConnection. Cliccate con il tasto destro su di esso e scegliete Ottenere la stringa di connessione. Poi copiate la stringa di connessione ODBC. Vi servirà per passarla allo script.
4.3. Usa l'opzione Nuova query per provare una query che acceda a ciò che ti serve in SharePoint. Faremo una query di esempio qui, ma qui è dove dovreste inserire ciò che state cercando in SharePoint. Una volta cliccato su Nuova query, aprire il Browser di connessione. Trova il Connettore SharePoint e aprirlo fino a che non vedi il Tabelle opzione. Si noterà che lo schema contiene una "tabella" chiamata Site_Pages, quindi possiamo costruire la nostra query come
SELECT UniqueId, ContentType, Created, Modified, ContentVersion FROM Site_Pages LIMIT 10;
per selezionare le prime 10 voci del SharePoint Pagine del sito elenco. È importante notare che anche se sembra che stiamo usando direttamente un database, non è così.
Connect Bridge accede all'API e poi la presenta come se fosse un database. Una volta ottenuta la query, copiala, poiché ti servirà anche per trasmetterla allo script.
Mani sullo scripting!
Il nucleo e, allo stesso tempo, l'unico file della nostra soluzione è CBQuery.py. Il codice sorgente completo è qui sotto. Concentratevi sulle linee 70-92 che rappresentano la soluzione di base. Una descrizione completa di come funziona questo script è qui sotto.
#!/usr/bin/env python3
# codifica: utf-8
"""
CBQuery -- recupera dati da e scrive dati su SharePoint
Esegue query SQL tramite il driver ODBC Connect Bridge.
@autore: Ana Neto
@creato: 2019-07-04
@aggiornato: 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="Stringa di connessione ODBC da Connect Bridge Management Studio")
parser.add_argument("query", help="Query SQL o istruzione EXEC da eseguire")
args = parser.parse_args()
try:
# Chiudere la connessione al termine dell'operazione
with closing(pyodbc.connect(args.connstr)) as conn:
cursor = conn.cursor()
cursor.execute(args.query)
if cursor.description is None:
# Nessuna riga di risultato restituita
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"Errore ODBC: {err}", file=sys.stderr)
return 2
if __name__ == "__main__":
sys.exit(main())Ecco cosa sta facendo il nostro copione:
- Il sito
argparseIl blocco legge i due argomenti della riga di comando,connstr(la stringa di connessione ODBC) equery. - La variabile `connstr` contiene la stringa di connessione ODBC che passiamo al modulo `pyodbc` per creare una connessione ODBC (memorizzata nel
connessionevariabile). La connessione è racchiusa incontextlib.closing, quindi rimane sempre chiuso alla fine del blocco, anche se si verifica un errore. - Come passo successivo, apriamo un cursore del database utilizzando la connessione memorizzata in conn
- Eseguiamo la query SQL (si tratta della query che è stata passata tramite il parametro della riga di comando denominato query)
- Se l'istruzione restituisce delle righe, eseguiamo un ciclo sul cursore e leggiamo i risultati riga per riga, stampando ogni riga così com'è. Questa è stata la nostra scelta per questa demo, ma si noti che l'output potrebbe essere di qualsiasi tipo… potremmo formattarlo come XML, JSON, CSV… o qualsiasi altro formato di scambio dati. Potremmo anche semplicemente utilizzare l’oggetto della riga di dati grezzi nel codice successivo per eseguire operazioni personalizzate.
- Se l'istruzione non restituisce alcuna riga (INSERT, EXEC), lo script visualizza il messaggio “OK”.
- In entrambi i casi la transazione viene confermata esplicitamente, pertanto le modifiche apportate dalle istruzioni INSERT e dalle procedure memorizzate vengono salvate.
- Gli errori ODBC vengono visualizzati su stderr e lo script termina con il codice 2. La combinazione Ctrl+C termina lo script con il codice 130, mentre il completamento con successo termina con il codice 0.
Esecuzione dello script CBQuery.py
CBQuery.py accetta due argomenti posizionali della riga di comando: connstr e query.
Dobbiamo copiarli da Connect Bridge Management Studio come spiegato sopra (punto 4 del Per iniziare sezione).
Quindi esegui lo script in questo modo:
python CBQuery.py "" "SELECT UniqueId, ContentType FROM Site_Pages LIMIT 10;"
Supponiamo ora di voler creare un elenco di contatti in SharePoint e di voler inserire un contatto in tale elenco.
In sostanza, dobbiamo seguire la stessa procedura, ma modificare la query in modo da utilizzare una “procedura memorizzata”. Anche in questo caso, questa “procedura memorizzata” accederà di fatto a SharePoint tramite l’API, ma inserirà i dati nel SharePoint da voi specificato. Ecco la query che dobbiamo eseguire:
EXEC SP_CREATE_TABLE 'MyContacts', 'Questa tabella è stata creata utilizzando Connect Bridge', true, 'Contacts';
I parametri, in ordine, sono: il nome della nuova lista (I miei contatti); una descrizione; un indicatore booleano (vero); e il modello di elenco SharePoint su cui basarlo (Contatti).
La query crea una nuova lista SharePoint (MyContacts), con una descrizione che apparirà nella barra di lancio rapido della pagina SharePoint.
Ora dobbiamo eseguire la seguente query per aggiornare la rappresentazione dello schema ODBC Connect Bridge in base allo schema SharePoint. In questo modo, la nostra nuova “tabella” diventa visibile al client ODBC. (Questa procedura non richiede parametri.)
EXEC SP_UPDATE_SCHEMA;
A questo punto possiamo inserire un contatto nella nostra lista di contatti.
INSERT INTO MyContacts (FirstName, LastName) VALUES ('Ana', 'Neto');
Ora dovreste essere in grado di vedere la nostra voce e la nostra nuova lista SharePoint nell'interfaccia utente SharePoint.
Possiamo selezionare la voce che abbiamo appena creato eseguendo la seguente query.
SELECT Nome, Cognome FROM MyContacts
Per caricare un documento condiviso, utilizzeremo la lista SharePoint esistente denominata “Documents” e la “procedura memorizzata” SP_INSERT_SHAREDDOCUMENT. I parametri richiesti sono:
- Nome della tabella dei documenti condivisi
- Nome file
- Cartella (percorso relativo, sul server)
- Tipo MIME
- Dati relativi al file (codificati in Base64; nell'esempio riportato di seguito,
SGVsbG8gV29ybGQ=è semplicemente il testo “Hello World”)
Possiamo inserire il documento eseguendo la seguente dichiarazione:
EXEC SP_INSERT_SHAREDDOCUMENT
'Documenti',
'hello2.txt',
'/Documenti condivisi/Nuova cartella',
'text/plain',
'SGVsbG8gV29ybGQ=';
Se desideri verificare in anticipo la presenza della cartella, puoi eseguire l'istruzione riportata di seguito. I suoi parametri sono il nome della raccolta documenti e il percorso relativo della cartella:
EXEC SP_ENSURE_FOLDER_PATH
'Documents',
'/NewFolder';
Dopo aver eseguito SP_INSERT_SHAREDDOCUMENT, possiamo verificare la presenza del documento nella tabella "Documenti" eseguendo l'istruzione:
SELECT Id, Nome FROM Documents;
È inoltre possibile scaricare il contenuto binario di un determinato documento da una specifica raccolta di documenti eseguendo l'istruzione di seguito. I suoi parametri sono il nome della libreria e l'ID del documento, come restituiti dal codice SELECT riportato sopra:
EXEC SP_SAVE_SHAREDDOCUMENT_BY_ID 'Documenti', 2;
A questo punto, è possibile verificare la presenza del documento condiviso nell'interfaccia utente di SharePoint.
Vincoli
Finora abbiamo potuto utilizzare lo strumento Connect Bridge solo dai sistemi operativi Windows, poiché non è disponibile alcuna libreria client ODBC per Linux (e non siamo nemmeno sicuri che sia possibile realizzarla). Assicuratevi quindi di testare i vostri script Python su un computer Windows.
Conclusione
Abbiamo visto come sia possibile accedere facilmente ai dati di SharePoint in Python utilizzando la piattaforma di integrazione Connect Bridge. Ora immaginate che ciò che avete visto in questo articolo sia possibile anche con Microsoft Dynamics CRM e Microsoft Exchange! Sì, con Connect Bridge è possibile e il procedimento è simile.
A chi posso rivolgermi per domande?

Da Ana Neto, consulente tecnico a Connecting Software.
"Sono un ingegnere informatico dal 1997, con un amore più recente per la scrittura e il public speaking". Avete domande o commenti su questo articolo? Mi piacerebbe avere il vostro feedback, lasciate un commento qui sotto!"

Comments 1
Grazie per la chiara spiegazione!