เริ่มต้นใช้งานด่วน: เชื่อมต่อกับฐานข้อมูล SQL ใน Fabric จากสมุดบันทึก Jupyter

ในการเริ่มต้นใช้งานด่วนนี้ คุณจะใช้ Jupyter Notebook ใน Visual Studio Code เพื่อรับข้อมูลเชิงลึกทางธุรกิจได้อย่างรวดเร็ว คุณใช้ mssql-python ไดรเวอร์สําหรับ Python เพื่อเชื่อมต่อกับ ฐานข้อมูล SQL ของคุณใน Fabric และอ่านข้อมูลที่จัดรูปแบบเพื่อใช้ในอีเมล รายงาน งานนําเสนอ ฯลฯ

mssql-pythonไดรเวอร์ไม่ต้องการการพึ่งพาภายนอกใดๆ บนเครื่อง Windows ไดรเวอร์จะติดตั้งทุกอย่างที่จําเป็นด้วยการติดตั้งเพียงครั้งเดียว pip ช่วยให้คุณใช้ไดรเวอร์เวอร์ชันล่าสุดสําหรับสคริปต์ใหม่ได้โดยไม่ทําลายสคริปต์อื่นๆ ที่คุณไม่มีเวลาอัปเกรดและทดสอบ

เอกสารประกอบ | ซอร์สโค้ด | mssql-pythonแพ็คเกจ (PyPi) | รหัสสตูดิโอภาพ

ข้อกําหนดเบื้องต้น


สร้างโครงการและเรียกใช้โค้ด

สร้างโครงการใหม่

  1. เปิดพรอมต์คําสั่งในไดเรกทอรีการพัฒนาของคุณ หากคุณไม่มี ให้สร้างไดเร็กทอรีใหม่ที่เรียกว่า python, scriptsฯลฯหลีกเลี่ยงโฟลเดอร์บน OneDrive ของคุณการซิงโครไนซ์อาจรบกวนการจัดการสภาพแวดล้อมเสมือนของคุณ

  2. สร้างโปรเจ็กต์ใหม่ด้วยuv

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

เพิ่มการขึ้นต่อกัน

ในไดเร็กทอรีเดียวกัน ให้ติดตั้งแพmssql-pythonคเกจ , python-dotenv, , richpandasและ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

ในไดเร็กทอรีเดียวกัน ให้เรียกใช้คําสั่งต่อไปนี้

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 ที่ด้านบนของสมุดบันทึกเพื่อเพิ่มเซลล์ Markdown ใหม่

  5. เพิ่มข้อความต่อไปนี้ลงในเซลล์มาร์กดาวน์ใหม่

    ## Define queries for use later
    
  6. เลือก เครื่องหมายถูก ในแถบเครื่องมือของเซลล์ หรือใช้แป้นพิมพ์ Ctrl+Enter ลัด หรือ Shift+Enter เพื่อแสดงเซลล์ markdown

  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 ที่ด้านบนของสมุดบันทึกเพื่อเพิ่มเซลล์ Markdown ใหม่

  2. เพิ่มข้อความต่อไปนี้ลงในเซลล์มาร์กดาวน์ใหม่

    ## Print orders by customer and display in a table
    
  3. เลือก เครื่องหมายถูก ในแถบเครื่องมือของเซลล์ หรือใช้แป้นพิมพ์ Ctrl+Enter ลัด หรือ Shift+Enter เพื่อแสดงเซลล์ markdown

  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ซึ่งใช้ข้อมูลประจําตัวที่แคชไว้ซ้ํา

  1. ใช้ปุ่ม เรียกใช้ทั้งหมด ที่ด้านบนของสมุดบันทึกเพื่อเรียกใช้สมุดบันทึก

  2. เลือกเคอร์เนล jupyter-notebook-qs เมื่อได้รับแจ้ง

แสดงผลลัพธ์ในแผนภูมิ

  1. ตรวจทานผลลัพธ์ของเซลล์สุดท้าย คุณควรเห็นตารางที่มีสามคอลัมน์และห้าแถว

  2. ใช้ปุ่ม + Markdown ที่ด้านบนของสมุดบันทึกเพื่อเพิ่มเซลล์ Markdown ใหม่

  3. เพิ่มข้อความต่อไปนี้ลงในเซลล์มาร์กดาวน์ใหม่

    ## Display spend by category in a horizontal bar chart
    
  4. เลือก เครื่องหมายถูก ในแถบเครื่องมือของเซลล์ หรือใช้แป้นพิมพ์ Ctrl+Enter ลัด หรือ Shift+Enter เพื่อแสดงเซลล์ markdown

  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 ไดรเวอร์เพื่อดูตัวอย่างเพิ่มเติม เพื่อแสดงความคิดเห็นหรือรายงานปัญหา