使用Python获取SharePoint列表

时间:2017-03-20 12:00:01

标签: python sql sharepoint office365-restapi

我试图找到任何可能的方法来获取Python中的SharePoint列表。我能够通过以下视频连接到SharePoint并使用Rest API获取XML数据:https://www.youtube.com/watch?v=dvFbVPDQYyk ...但不确定如何将列表数据导入python。最终目标是获取SharePoint数据并每天导入SSMS。

这是我到目前为止所拥有的......

import requests
from requests_ntlm import HttpNtlmAuth
url='URL would go here'
username='username would go here'
password='password would go here'
r=requests.get(url, auth=HttpNtlmAuth(username,password),verify=False)

我相信这些将是下一步。我真的只需要帮助从Excel中以Excel / CSV格式获取数据,并且应该没问题。但任何建议都会有所帮助..

#PARSE XML VIA REST API
#PRINT INTO DATAFRAME AND CONVERT INTO CSV
#IMPORT INTO SQL SERVER
#EMAIL RESULTS

4 个答案:

答案 0 :(得分:2)

这可以使用SharePlum和Pandas完成 以下是工作代码段

import pandas as pd     # importing pandas to write SharePoint list in excel or csv
from shareplum import Site 
from requests_ntlm import HttpNtlmAuth

cred = HttpNtlmAuth(#userid_here, #password_here)
site = Site('#sharePoint_url_here', auth=cred)

sp_list = site.List('#SharePoint_list name here') # this creates SharePlum object
data = sp_list.GetListItems('All Items') # this will retrieve all items from list

# this creates pandas data frame you can perform any operation you like do within 
# pandas capabilities     

data_df = pd.DataFrame(data[0:])
data_df.to_excel("data.xlsx")

请帮忙打分。 预先谢谢你!

答案 1 :(得分:1)

from shareplum import Site
from requests_ntlm import HttpNtlmAuth

server_url = "https://sharepoint.xxx.com/"
site_url = server_url + "sites/org/"

auth = HttpNtlmAuth('xxx\\user', 'pwd')
site = Site(site_url, auth=auth, verify_ssl=False)
sp_list = site.List('list name in my share point')
data = sp_list.GetListItems('All Items', rowlimit=200)

答案 2 :(得分:0)

我知道这并不能直接回答您的问题(现在您可能已经回答了),但是我会尝试SharePlum库。希望它应该simplify与SharePoint交互的过程。

此外,我不确定您是否需要将数据导出到csv中,但是可以connect directly to SQL Server并更直接地插入数据。

我只是将其添加到评论中,但是声誉还不够高。

答案 3 :(得分:0)

我可以为大多数这些问题提供帮助

import requests
import xml.etree.ElementTree as ET
import csv

from requests_ntlm import HttpNtlmAuth

response = requests.get("your_url", auth=HttpNtlmAuth('xxxx\\username','password'))
tree =  ET.ElementTree(ET.fromstring(response.content))
tree.write('file_name_xml.xml')
root = tree.getroot()

#Create csv file 
csv_file = open('file_name_csv.csv', 'w', newline = '', encoding='ansi')
csvwriter = csv.writer(csv_file)

col_names = ['Col_1', 'Col_2', 'Col_3', 'Col_n']
csvwriter.writerow(col_names)

field_tag = ['dado_1', 'dado_2', 'dado_3', 'dado_n']

#schema XML microsoft 
ns0 = "http://www.w3.org/2005/Atom"
ns1 = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
ns2 = "http://schemas.microsoft.com/ado/2007/08/dataservices"


for member in root:
    if member.tag == '{' + ns0 + '}entry':
        for element in member:
            if element.tag == '{' + ns0 + '}content':
                data_line = []

                for field in element[0]:            
                    for count in range(0, len(field_tag)):
                        if field.tag == '{' + ns2 + '}' + field_tag[count]:
                            data_line.append(field.text)


                csvwriter.writerow(data_line)

csv_file.close()