Làm cách nào để trích xuất dữ liệu từ SharePoint bằng Python?

Bài viết này mô tả cách làm cho Python kết nối với SharePoint, tức là cách truy cập dữ liệu của hệ thống Microsoft SharePoint [2010, 2013 hoặc 2019] từ bên trong tập lệnh ngôn ngữ Python [sử dụng phiên bản 3. 7]. Việc truyền dữ liệu được thực hiện thông qua lớp ODBC. Chúng tôi đã đạt được điều này trong Python bằng cách sử dụng phiên bản mô-đun pyodbc. 4. 0. 26

Điều quan trọng cần lưu ý là trong bài viết này, chúng tôi sử dụng một sản phẩm thương mại có tên là Connect Bridge. Trên thực tế, đây là điều làm cho việc tích hợp Python / SharePoint trở nên khả thi, bằng cách cho phép giao tiếp dữ liệu theo cách mà bạn chắc chắn rằng mình không làm rối tung phía SharePoint [và, hãy tin tôi, điều này RẤT quan trọng]. Bạn có thể dùng thử miễn phí Connect Bridge, vì vậy bạn có thể tự mình thử tất cả những thứ này

"Cây cầu kết nối" này là gì?

tôi rất vui vì bạn đã hỏi. Connect Bridge là một nền tảng tích hợp được phát triển bởi Connecting Software cho phép bạn kết nối bất kỳ phần mềm nào thông qua trình điều khiển ODBC, trình điều khiển JDBC hoặc Dịch vụ web. Tổng quan chung về kiến ​​trúc của công cụ nằm trên sơ đồ kịch bản máy khách-máy chủ này

Kiến trúc nền tảng tích hợp Connect Bridge

Như bạn có thể thấy trên sơ đồ kiến ​​trúc, công cụ này có thể được sử dụng để truy cập không chỉ dữ liệu Microsoft SharePoint từ bên trong tập lệnh Python của bạn mà bạn còn có thể lấy/đặt dữ liệu từ/đến Microsoft Exchange và Microsoft Dynamics CRM cùng nhiều công cụ khác

Mục đích - lấy dữ liệu SharePoint bằng Python

Mục đích công việc của chúng tôi là tạo một tập lệnh Python cho phép chúng tôi nói chuyện với SharePoint qua Connect Bridge

Chúng tôi sử dụng SharePoint, nhưng có thể sử dụng logic tương tự để kết nối với Microsoft Exchange hoặc CRM như Salesforce hoặc Dynamics

Bắt đầu

Bây giờ hãy bắt đầu hướng dẫn này. Mục tiêu của chúng tôi là tạo một tập lệnh Python đơn giản truy cập phiên bản SharePoint. Chúng tôi cho rằng phiên bản SharePoint đã tồn tại [đảm bảo bạn có sẵn thông tin đăng nhập của mình]. Đây là những bước đơn giản bạn cần làm theo

1. Yêu cầu dùng thử miễn phí và cài đặt Connect Bridge
2. Cài đặt phiên bản Python cho Windows. 3. 7+. Xin lưu ý rằng để viết, chạy và gỡ lỗi tập lệnh của tôi dễ dàng hơn, chúng tôi đã sử dụng Liclipse 5. 2. 4 với plugin pydev, nhưng tất nhiên đây là tùy chọn. Bạn có thể sử dụng trình chỉnh sửa bạn chọn.
3. Cài đặt mô-đun pyodbc 4. 0. 26+
4. Chạy Connect Bridge Management Studio và
4. 1. Thêm tài khoản cho SharePoint [Accounts - Thêm tài khoản]. Đây là nơi bạn sẽ cần những thông tin đăng nhập mà chúng tôi đã đề cập trước đó
4. 2. Mở tùy chọn Truy vấn mới và sau đó là Trình duyệt kết nối. Tìm SharePoint Connector và mở nó cho đến khi bạn thấy DefaultConnection. Nhấp chuột phải vào nó và chọn Nhận chuỗi kết nối. Sau đó sao chép chuỗi kết nối ODBC. Bạn sẽ cần nó để chuyển nó vào tập lệnh
4. 3. Sử dụng tùy chọn Truy vấn mới để kiểm tra một truy vấn sẽ truy cập những gì bạn cần trong SharePoint. Chúng tôi sẽ thực hiện một truy vấn ví dụ ở đây, nhưng đây là nơi bạn nên nhập nội dung mà bạn đang tìm kiếm trong SharePoint. Khi bạn đã nhấp vào Truy vấn mới, hãy mở Trình duyệt kết nối. Tìm SharePoint Connector và mở nó cho đến khi bạn thấy tùy chọn Tables. Bạn sẽ thấy rằng lược đồ chứa một “bảng” được gọi là Site_Pages để chúng tôi có thể xây dựng truy vấn của mình dưới dạng

CHỌN UniqueId, ContentType, Created, Modified, ContentVersion TỪ Site_Pages GIỚI HẠN 10;

để chọn 10 mục đầu tiên từ danh sách Trang web của SharePoint. Điều quan trọng cần lưu ý là mặc dù có vẻ như chúng ta đang sử dụng cơ sở dữ liệu trực tiếp, nhưng thực tế không phải vậy

Connect Bridge đang truy cập API và sau đó trình bày nó như thể nó là một cơ sở dữ liệu. Khi bạn có truy vấn của mình, hãy sao chép nó, vì bạn cũng sẽ cần nó để chuyển nó vào tập lệnh

Bắt tay vào viết kịch bản

Cốt lõi và đồng thời là tệp duy nhất trong giải pháp của chúng tôi là CBQuery. py. Mã nguồn đầy đủ ở bên dưới. Vui lòng tập trung vào các dòng 70-92 mô tả giải pháp cốt lõi. Dưới đây là mô tả đầy đủ về cách thức hoạt động của tập lệnh này

#!/usr/local/bin/python3.7 

# encoding: utf-8 

''' 

CBQuery -- query data from, write data to SharePoint 

  

CBQuery is a script that allows to run SQL queries via Connect Bridge ODBC driver 

  

@author:    Ana Neto and Michal Hainc 

  

@copyright:  2019 

  

@contact:    ana@connecting-soiftware.com 

@deffield    updated: 04.07.2019 

''' 

  

import sys 

import os 

import pyodbc 

  

from argparse import ArgumentParser 

from argparse import RawDescriptionHelpFormatter 

  

__all__ = [] 

__version__ = 0.2 

__date__ = '2019-07-04' 

__updated__ = '2019-07-04' 

  

DEBUG = 1 

TESTRUN = 0 

PROFILE = 0 

  

class CLIError[Exception]: 

    '''Generic exception to raise and log different fatal errors.''' 

    def __init__[self, msg]: 

        super[CLIError].__init__[type[self]] 

        self.msg = "E: %s" % msg 

    def __str__[self]: 

        return self.msg 

    def __unicode__[self]: 

        return self.msg 

  

def main[argv=None]: # IGNORE:C0111 

    '''Command line options.''' 

  

    if argv is None: 

        argv = sys.argv 

    else: 

        sys.argv.extend[argv] 

  

    program_name = os.path.basename[sys.argv[0]] 

    program_version = "v%s" % __version__ 

    program_build_date = str[__updated__] 

    program_version_message = '%%[prog]s %s [%s]' % [program_version, program_build_date] 

    program_shortdesc = __import__['__main__'].__doc__.split["n"][1] 

    program_license = '''%s 

  

  Created by Ana Neto and Michal Hainc on %s. 

  

  Licensed under the Apache License 2.0 

  //www.apache.org/licenses/LICENSE-2.0 

  

  Distributed on an "AS IS" basis without warranties 

  or conditions of any kind, either express or implied. 

  

USAGE 

''' % [program_shortdesc, str[__date__]] 

  

    try: 

        # Setup argument parser 

        parser = ArgumentParser[description=program_license, formatter_class=RawDescriptionHelpFormatter] 

        parser.add_argument['connstr']         

        parser.add_argument['query'] 

         

        # Process arguments 

        args = parser.parse_args[] 

  

        query = args.query 

        connstr = args.connstr 

  

        conn = pyodbc.connect[connstr] 

        cursor = conn.cursor[] 

        cursor.execute[query] 

        while 1: 

            row = None 

            try: 

                row = cursor.fetchone[] 

            except:  

                print[sys.exc_info[][1]] 

                break 

            if not row: 

                break                     

            print[row] 

                         

             

    except KeyboardInterrupt: 

        ### handle keyboard interrupt ### 

        return 0 

    except: 

        print[sys.exc_info[][1]] 

        #indent = len[program_name] * " "         

        #sys.stderr.write[program_name + ": " + repr[e] + "n"] 

        #sys.stderr.write[indent + "  for help use --help"] 

        return 2 

  

if __name__ == "__main__": 

          

    if TESTRUN: 

        import doctest 

        doctest.testmod[] 

    if PROFILE: 

        import cProfile 

        import pstats 

        profile_filename = 'CBQuery_profile.txt' 

        cProfile.run['main[]', profile_filename] 

        statsfile = open["profile_stats.txt", "wb"] 

        p = pstats.Stats[profile_filename, stream=statsfile] 

        stats = p.strip_dirs[].sort_stats['cumulative'] 

        stats.print_stats[] 

        statsfile.close[] 

        sys.exit[0] 

    sys.exit[main[]] 

Đây là những gì kịch bản của chúng tôi đang làm

• Các dòng 71-80 tập trung vào việc lấy các biến connstr và truy vấn từ các đối số dòng lệnh đầu vào. Đối với điều này, chúng tôi đã sử dụng mẫu tập lệnh argparse của pydev để giúp cuộc sống của tôi dễ dàng hơn
• Biến connstr giữ chuỗi kết nối ODBC mà chúng ta chuyển vào mô-đun pyodbc để tạo kết nối ODBC [được lưu trữ trong biến conn]
• ở bước tiếp theo, chúng ta mở một con trỏ cơ sở dữ liệu bằng cách sử dụng kết nối được lưu trữ trong conn
• Có kết nối được lưu trữ trong conn, chúng tôi mở con trỏ cơ sở dữ liệu bằng conn
• Chúng tôi thực hiện truy vấn SQL [đây là truy vấn được truyền qua tham số dòng lệnh có tên là truy vấn]
• Cuối cùng, chúng ta sử dụng vòng lặp while để đọc kết quả từ từng hàng con trỏ. Khi con trỏ. fetchone trả về Không, chúng tôi phá vỡ vòng lặp
• Nếu một ngoại lệ xảy ra trong quá trình tìm nạp ODBC, chúng tôi cũng ngắt vòng lặp và in vấn đề ra đầu ra
• Nếu phương thức tìm nạp thành công và trả về một hàng dữ liệu, chúng tôi sẽ in hàng dữ liệu thô ra đầu ra. Đây là lựa chọn của chúng tôi cho bản demo này, nhưng xin lưu ý rằng đây có thể là bất kỳ loại đầu ra nào…chúng tôi có thể định dạng dưới dạng xml hoặc json, csv… hoặc bất kỳ loại định dạng trao đổi dữ liệu nào khác. Chúng tôi cũng có thể chỉ cần sử dụng đối tượng hàng dữ liệu thô để có thêm mã để thực hiện các tác vụ tùy chỉnh

Chạy CBQuery. tập lệnh py

Chúng tôi biết rằng CBQuery của chúng tôi. py chấp nhận hai đối số dòng lệnh vị trí. connstr và truy vấn

Chúng tôi cần sao chép những thứ này từ Connect Bridge Management Studio như đã giải thích ở trên [điểm 4]

Chúng tôi có thể tạo danh sách liên hệ SharePoint và viết một mục không?

Bây giờ, giả sử chúng ta muốn tạo một danh sách liên hệ trong SharePoint và tạo một liên hệ trong danh sách đó. Về cơ bản, chúng tôi cần tuân theo quy trình tương tự nhưng thay đổi truy vấn để sử dụng "Quy trình được lưu trữ". Trên thực tế, "Quy trình được lưu trữ" này sẽ truy cập SharePoint thông qua API, nhưng nó đang nhận dữ liệu vào SharePoint mà bạn đã chỉ định. Đây là truy vấn mà chúng ta cần chạy

EXEC SP_CREATE_TABLE 'MyContacts', 'This table was created using Connect Bridge', true, 'Contacts';

Truy vấn tạo một danh sách SharePoint mới [Danh bạ của tôi], với một mô tả sẽ hiển thị trong thanh khởi động nhanh của trang SharePoint

Bây giờ chúng ta cần gọi truy vấn sau để cập nhật phản ánh lược đồ ODBC của Connect Bridge của lược đồ SharePoint. Vì vậy, “bảng” mới của chúng tôi hiển thị với ứng dụng khách ODBC

EXEC SP_UPDATE_SCHEMA;

Chúng tôi có thể chèn một mục liên hệ vào danh sách liên hệ của mình tại thời điểm này

INSERT INTO MyContacts [FirstName, LastName] VALUES ['Ana', 'Neto'];

Giờ đây, bạn có thể xem mục nhập và danh sách SharePoint mới của chúng tôi trong Giao diện người dùng SharePoint

Chúng tôi có thể chọn mục chúng tôi vừa tạo bằng cách chạy truy vấn sau

SELECT FirstName,LastName FROM MyContacts

Tải lên và tải xuống các tài liệu được chia sẻ

Để tải lên tài liệu được chia sẻ, chúng tôi sẽ sử dụng danh sách SharePoint hiện có “Tài liệu” và "Quy trình được lưu trữ" SP_INSERT_SHAREDDOCUMENT. Các tham số nó lấy là

• Tên bảng tài liệu được chia sẻ

• Tên tệp

• Thư mục [đường dẫn tương đối, trên máy chủ]

• Kiểu MIME

• Dữ liệu cho tập tin

Chúng ta có thể chèn tài liệu bằng cách chạy câu lệnh sau

EXEC SP_INSERT_SHAREDDOCUMENT
    'Documents',
    'hello2.txt',
    '/Shared Documents/NewFolder',
    'text/plain',
    'SGVsbG8gV29ybGQ=';

Nếu bạn muốn kiểm tra trước sự hiện diện của thư mục, bạn có thể chạy câu lệnh

EXEC SP_ENSURE_FOLDER_PATH
    'Documents', 
    '/NewFolder';

Sau khi chạy SP_INSERT_SHAREDDOCUMENT, chúng ta có thể kiểm tra sự hiện diện của tài liệu trong bảng “Documents” bằng cách chạy câu lệnh

SELECT Id,Name FROM Documents;

Chúng tôi cũng có thể tải xuống nội dung nhị phân của một tài liệu cụ thể từ một thư viện tài liệu cụ thể bằng cách chạy câu lệnh

________số 8_______

Tại thời điểm này, bạn có thể kiểm tra sự tồn tại của tài liệu được chia sẻ trong giao diện người dùng SharePoint

Hạn chế

Cho đến nay, chúng tôi chỉ có thể sử dụng công cụ Connect Bridge từ các hệ điều hành Windows, vì không có thư viện máy khách ODBC Linux nào [và chúng tôi không chắc liệu điều đó có khả thi hay không]. Vì vậy, hãy chắc chắn chơi với các tập lệnh Python của bạn trên máy Windows

Phần kết luận

Chúng ta đã thấy cách truy cập dữ liệu SharePoint trong Python có thể dễ dàng thực hiện bằng nền tảng tích hợp Connect Bridge. Bây giờ hãy tưởng tượng rằng những gì bạn đã thấy trong bài viết này cũng có thể thực hiện được với Microsoft Dynamics CRM và Microsoft Exchange. Vâng, với Connect Bridge thì điều này hoàn toàn có thể và cách thực hiện cũng tương tự

Tôi có thể liên hệ với ai để đặt câu hỏi?

“Tên tôi là Ana Neto, và tôi là cố vấn kỹ thuật cho Phần mềm kết nối. Tôi là kỹ sư phần mềm từ năm 1997 và tôi thích thế giới của những khả năng kết nối Bridge mở ra

Làm cách nào để đọc dữ liệu từ danh sách SharePoint bằng Python?

3 – Mã nguồn hoàn chỉnh .
Đọc nội dung trang web
Sử dụng một thể hiện của lớp BeautifulSoup để phân tích nội dung trang web
Kết nối với danh sách SharePoint
Tải xuống tất cả các mục trong danh sách SharePoint
So sánh dữ liệu được trích xuất từ ​​trang web với dữ liệu được tải xuống từ danh sách SharePoint

Python có thể tương tác với SharePoint không?

SharePlum là một cách dễ dàng hơn để làm việc với các dịch vụ SharePoint . Nó xử lý tất cả các phần lộn xộn khi xử lý SharePoint và cho phép bạn viết mã Pythonic rõ ràng.

SharePoint có API không?

SharePoint cung cấp một bộ API phong phú có thể được sử dụng theo nhiều cách khác nhau. Bài viết này phác thảo những tùy chọn bạn có, cách chúng hoạt động và những ưu điểm và nhược điểm của chúng là gì.

SharePy trong Python là gì?

SharePy - Xác thực SharePoint Online đơn giản dành cho Python . Mô-đun này sẽ xử lý xác thực cho trang SharePoint Online/O365 của bạn, cho phép bạn thực hiện các yêu cầu HTTP đơn giản từ Python.

Chủ Đề