Οδηγός γρήγορης εκκίνησης: Σύνδεση σε μια βάση δεδομένων SQL στο Fabric από ένα σημειωματάριο Jupyter

Σε αυτήν τη γρήγορη εκκίνηση, χρησιμοποιείτε το Jupyter Notebook στον κώδικα του Visual Studio για να αντλήσετε γρήγορα επιχειρηματικές πληροφορίες. Χρησιμοποιείτε το πρόγραμμα οδήγησης για την mssql-python Python για να συνδεθείτε στη βάση δεδομένων SQL στο Fabric και να διαβάσετε τα δεδομένα που στη συνέχεια μορφοποιούνται για χρήση σε μηνύματα ηλεκτρονικού ταχυδρομείου, αναφορές, παρουσιάσεις κ.λπ.

Το mssql-python πρόγραμμα οδήγησης δεν απαιτεί εξωτερικές εξαρτήσεις σε μηχανήματα Windows. Το πρόγραμμα οδήγησης εγκαθιστά όλα όσα χρειάζεται με μία μόνο pip εγκατάσταση, επιτρέποντάς σας να χρησιμοποιήσετε την πιο πρόσφατη έκδοση του προγράμματος οδήγησης για νέα σενάρια χωρίς να σπάσετε άλλα σενάρια που δεν έχετε χρόνο να αναβαθμίσετε και να δοκιμάσετε.

Τεκμηρίωση | Πηγαίος κώδικας | Πακέτο (PyPi) | Κώδικας Visual Studio

Προϋποθέσεις


Δημιουργήστε το έργο και εκτελέστε τον κώδικα

Δημιουργία νέου έργου

  1. Ανοίξτε μια γραμμή εντολών στον κατάλογο ανάπτυξης. Εάν δεν έχετε, δημιουργήστε έναν νέο κατάλογο που ονομάζεται python, scripts, κ.λπ. Αποφύγετε φακέλους στο OneDrive σας, ο συγχρονισμός μπορεί να επηρεάσει τη διαχείριση του εικονικού σας περιβάλλοντος.

  2. Δημιουργήστε ένα νέο έργο με uvτο .

    uv init jupyter-notebook-qs
    cd jupyter-notebook-qs
    

Προσθήκη εξαρτήσεων

Στον ίδιο κατάλογο, εγκαταστήστε τα mssql-pythonπακέτα , python-dotenv, rich, pandasκαι matplotlib . Στη συνέχεια, προσθέστε ipykernel και uv ως εξαρτήσεις προγραμματιστή. Το VS Code απαιτεί ipykernel και uv προστίθενται για να μπορείτε να αλληλεπιδράτε uv μέσα από τα κελιά του σημειωματαρίου σας χρησιμοποιώντας εντολές όπως !uv add mssql_python.

uv add mssql_python dotenv rich pandas matplotlib
uv add --dev ipykernel
uv add --dev uv

Εκκινήστε τον κώδικα του Visual Studio

Στον ίδιο κατάλογο, εκτελέστε την ακόλουθη εντολή.

code .

Ενημέρωση pyproject.toml

  1. Το pyproject.toml περιέχει τα μεταδεδομένα για το έργο σας.

  2. Ενημερώστε την περιγραφή για να είναι πιο περιγραφική.

    description = "A quick example using the mssql-python driver and Jupyter Notebooks."
    
  3. Αποθηκεύστε και κλείστε το αρχείο.

Αποθήκευση της συμβολοσειράς σύνδεσης

  1. Ανοίξτε το .gitignore αρχείο και προσθέστε μια εξαίρεση για .env αρχεία. Το αρχείο σας θα πρέπει να είναι παρόμοιο με αυτό το παράδειγμα. Φροντίστε να το αποθηκεύσετε και να το κλείσετε όταν τελειώσετε.

    # Python-generated files
    __pycache__/
    *.py[oc]
    build/
    dist/
    wheels/
    *.egg-info
    
    # Virtual environments
    .venv
    
    # Connection strings and secrets
    .env
    
  2. Στον τρέχοντα κατάλογο, δημιουργήστε ένα νέο αρχείο με το όνομα .env.

  3. Μέσα στο αρχείο, προσθέστε μια καταχώρηση για τη .env συμβολοσειρά σύνδεσης με το όνομα SQL_CONNECTION_STRING. Αντικαταστήστε το παράδειγμα εδώ με την πραγματική τιμή συμβολοσειράς σύνδεσης.

    SQL_CONNECTION_STRING="Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryDefault"
    

    Φιλοδώρημα

    Για τη βάση δεδομένων SQL στο Fabric, χρησιμοποιήστε τη συμβολοσειρά σύνδεσης ODBC από την καρτέλα συμβολοσειρών σύνδεσης χωρίς τις πληροφορίες DRIVER .

Δημιουργήστε ένα σημειωματάριο Jupyter

  1. Επιλέξτε Αρχείο και, στη συνέχεια, Νέο αρχείο και Σημειωματάριο Jupyter από τη λίστα. Ανοίγει ένα νέο σημειωματάριο.

  2. Επιλέξτε Αρχείο και, στη συνέχεια, Αποθήκευση ως... και δώστε ένα όνομα στο νέο σας σημειωματάριο.

  3. Προσθέστε τις ακόλουθες εισαγωγές στο πρώτο κελί.

    from os import getenv
    from mssql_python import connect
    from dotenv import load_dotenv
    from rich.console import Console
    from rich.table import Table
    import pandas as pd
    import matplotlib.pyplot as plt
    
  4. Χρησιμοποιήστε το κουμπί + Markdown στο επάνω μέρος του σημειωματαρίου για να προσθέσετε ένα νέο κελί σήμανσης.

  5. Προσθέστε το παρακάτω κείμενο στο νέο κελί σήμανσης.

    ## Define queries for use later
    
  6. Επιλέξτε το σημάδι ελέγχου στη γραμμή εργαλείων του κελιού ή χρησιμοποιήστε τις συντομεύσεις Ctrl+Enter πληκτρολογίου ή Shift+Enter για να αποδώσετε το κελί σήμανσης.

  7. Χρησιμοποιήστε το κουμπί + Κωδικός στο επάνω μέρος του σημειωματαρίου για να προσθέσετε ένα νέο κελί κωδικού.

  8. Προσθέστε τον ακόλουθο κώδικα στο νέο κελί κωδικού.

    SQL_QUERY_ORDERS_BY_CUSTOMER = """
    SELECT TOP 5
    c.CustomerID,
    c.CompanyName,
    COUNT(soh.SalesOrderID) AS OrderCount
    FROM
    SalesLT.Customer AS c
    LEFT OUTER JOIN SalesLT.SalesOrderHeader AS soh
    ON c.CustomerID = soh.CustomerID
    GROUP BY
    c.CustomerID,
    c.CompanyName
    ORDER BY
    OrderCount DESC;
    """
    
    SQL_QUERY_SPEND_BY_CATEGORY = """
    select top 10
    pc.Name as ProductCategory,
    SUM(sod.OrderQty * sod.UnitPrice) as Spend
    from SalesLT.SalesOrderDetail sod 
    inner join SalesLT.SalesOrderHeader soh on sod.salesorderid = soh.salesorderid 
    inner join SalesLT.Product p on sod.productid = p.productid 
    inner join SalesLT.ProductCategory pc on p.ProductCategoryID = pc.ProductCategoryID 
    GROUP BY pc.Name 
    ORDER BY Spend;
    """
    

Εμφάνιση αποτελεσμάτων σε πίνακα

  1. Χρησιμοποιήστε το κουμπί + Markdown στο επάνω μέρος του σημειωματαρίου για να προσθέσετε ένα νέο κελί σήμανσης.

  2. Προσθέστε το παρακάτω κείμενο στο νέο κελί σήμανσης.

    ## Print orders by customer and display in a table
    
  3. Επιλέξτε το σημάδι ελέγχου στη γραμμή εργαλείων του κελιού ή χρησιμοποιήστε τις συντομεύσεις Ctrl+Enter πληκτρολογίου ή Shift+Enter για να αποδώσετε το κελί σήμανσης.

  4. Χρησιμοποιήστε το κουμπί + Κωδικός στο επάνω μέρος του σημειωματαρίου για να προσθέσετε ένα νέο κελί κωδικού.

  5. Προσθέστε τον ακόλουθο κώδικα στο νέο κελί κωδικού.

    load_dotenv()
    with connect(getenv("SQL_CONNECTION_STRING")) as conn: # type: ignore
        with conn.cursor() as cursor:
            cursor.execute(SQL_QUERY_ORDERS_BY_CUSTOMER)
            if cursor:
                table = Table(title="Orders by Customer")
                # https://rich.readthedocs.io/en/stable/appendix/colors.html
                table.add_column("Customer ID", style="bright_blue", justify="center")
                table.add_column("Company Name", style="bright_white", justify="left")
                table.add_column("Order Count", style="bold green", justify="right")
    
                records = cursor.fetchall()
    
                for r in records:
                    table.add_row(f"{r.CustomerID}",
                                    f"{r.CompanyName}", f"{r.OrderCount}")
    
                Console().print(table)
    

Φιλοδώρημα

Στο macOS, και τα δύο ActiveDirectoryInteractive και ActiveDirectoryDefault λειτουργούν για έλεγχο ταυτότητας Microsoft Entra. ActiveDirectoryInteractive σας ζητά να εισέρχεστε κάθε φορά που εκτελείτε τη δέσμη ενεργειών. Για να αποφύγετε τις επαναλαμβανόμενες προτροπές εισόδου, συνδεθείτε μία φορά μέσω του Azure CLI εκτελώντας az loginτο και, στη συνέχεια, χρησιμοποιήστε ActiveDirectoryDefaultτο , το οποίο επαναχρησιμοποιεί τα διαπιστευτήρια στο cache.

  1. Χρησιμοποιήστε το κουμπί Εκτέλεση όλων στο επάνω μέρος του σημειωματαρίου για να εκτελέσετε το σημειωματάριο.

  2. Επιλέξτε τον πυρήνα jupyter-notebook-qs όταν σας ζητηθεί.

Εμφάνιση αποτελεσμάτων σε γράφημα

  1. Ελέγξτε την έξοδο του τελευταίου κελιού. Θα πρέπει να δείτε έναν πίνακα με τρεις στήλες και πέντε γραμμές.

  2. Χρησιμοποιήστε το κουμπί + Markdown στο επάνω μέρος του σημειωματαρίου για να προσθέσετε ένα νέο κελί σήμανσης.

  3. Προσθέστε το παρακάτω κείμενο στο νέο κελί σήμανσης.

    ## Display spend by category in a horizontal bar chart
    
  4. Επιλέξτε το σημάδι ελέγχου στη γραμμή εργαλείων του κελιού ή χρησιμοποιήστε τις συντομεύσεις Ctrl+Enter πληκτρολογίου ή Shift+Enter για να αποδώσετε το κελί σήμανσης.

  5. Χρησιμοποιήστε το κουμπί + Κωδικός στο επάνω μέρος του σημειωματαρίου για να προσθέσετε ένα νέο κελί κωδικού.

  6. Προσθέστε τον ακόλουθο κώδικα στο νέο κελί κωδικού.

    with connect(getenv("SQL_CONNECTION_STRING")) as conn: # type: ignore
        data = pd.read_sql_query(SQL_QUERY_SPEND_BY_CATEGORY, conn)
        # Set the style - use print(plt.style.available) to see all options
        plt.style.use('seaborn-v0_8-notebook')
        plt.barh(data['ProductCategory'], data['Spend'])
    
  7. Χρησιμοποιήστε το κουμπί Εκτέλεση κελιού ή Ctrl+Alt+Enter για να εκτελέσετε το κελί.

  8. Ελέγξτε τα αποτελέσματα. Κάντε αυτό το σημειωματάριο δικό σας.

Επόμενο βήμα

Επισκεφτείτε το αποθετήριο GitHub του mssql-python προγράμματος οδήγησης για περισσότερα παραδείγματα, για να συνεισφέρετε ιδέες ή να αναφέρετε προβλήματα.