แชร์ผ่าน


เริ่มต้นใช้งานด่วน: เชื่อมต่อกับฐานข้อมูล SQL ใน Fabric ด้วยโปรแกรมควบคุม Microsoft Python สําหรับ SQL Server

ในการเริ่มต้นใช้งานด่วนนี้ คุณจะใช้ Streamlit เพื่อสร้างรายงานได้อย่างรวดเร็ว ซึ่งช่วยให้คุณสามารถรวบรวมคําติชมของผู้ใช้ได้อย่างรวดเร็วเพื่อให้แน่ใจว่าคุณมาถูกทางแล้ว คุณใช้ mssql-python ไดรเวอร์สําหรับ Python เพื่อเชื่อมต่อกับ ฐานข้อมูล SQL ของคุณใน Fabric และอ่านข้อมูลที่โหลดลงในรายงานของคุณ

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

เอกสารประกอบ | ซอร์สโค้ด | mssql-pythonแพ็คเกจ (PyPi) | ยูวี

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


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

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

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

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

    uv init rapid-prototyping-qs
    cd rapid-prototyping-qs
    

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

ในไดเร็กทอรีเดียวกัน ให้ติดตั้งmssql-pythonแพคเกจ , streamlitและpython-dotenv

uv add mssql-python python-dotenv streamlit

เปิดใช้ Visual Studio Code

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

code .

อัปเดต pyproject.toml

  1. pyproject.toml มีข้อมูลเมตาสําหรับโครงการของคุณ เปิดไฟล์ในโปรแกรมแก้ไขที่คุณชื่นชอบ

  2. อัปเดตคําอธิบายให้สื่อความหมายมากขึ้น

    description = "A quick example of rapid prototyping using the mssql-python driver and Streamlit."
    
  3. บันทึกและปิดไฟล์

อัปเดต main.py

  1. เปิดไฟล์ชื่อ main.py. ควรคล้ายกับตัวอย่างนี้

    def main():
     print("Hello from rapid-protyping-qs!")
    
     if __name__ == "__main__":
       main()
    
  2. ที่ด้านบนของไฟล์ ให้เพิ่มการนําเข้าต่อไปนี้เหนือบรรทัดด้วยdef main()

    เคล็ดลับ

    ถ้า Visual Studio Code มีปัญหาในการแก้ไขแพคเกจ คุณจําเป็นต้องปรับปรุงล่ามเพื่อใช้สภาพแวดล้อมเสมือน

    from os import getenv
    from dotenv import load_dotenv
    from mssql_python import connect, Connection
    import pandas as pd
    import streamlit as st
    
  3. ระหว่างการนําเข้าและบรรทัดที่มี def main()ให้เพิ่มรหัสต่อไปนี้

    def page_load() -> None:
       st.set_page_config(
           page_title="View Data",
           page_icon=":bar_chart:",
           layout="wide",
           initial_sidebar_state="expanded"
       )
    
       st.title("AdventureWorksLT Customer Order History")
    
       SQL_QUERY = """SELECT c.* FROM [SalesLT].[Customer] c inner join SalesLT.SalesOrderHeader soh on c.CustomerId = soh.CustomerId;"""
    
       df = load_data(SQL_QUERY)
    
       event = st.dataframe(
           df,
           width='stretch',
           hide_index=True,
           on_select="rerun",
           selection_mode="single-row"
       )
    
       customer = event.selection.rows
    
       if len(customer) == 0:
           SQL_QUERY = """select soh.OrderDate, SUM(sod.OrderQty), SUM(sod.OrderQty * sod.UnitPrice) as spend,  pc.Name as ProductCategory 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 soh.OrderDate, pc.Name ORDER     BY soh.OrderDate, pc.Name;"""
       else:
           SQL_QUERY = f"""select soh.OrderDate, SUM(sod.OrderQty), SUM(sod.OrderQty * sod.UnitPrice) as spend,  pc.Name as ProductCategory 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 where soh.CustomerID = {df.loc    [customer, 'CustomerID'].values[0]} GROUP BY soh.OrderDate, pc.Name ORDER BY soh.OrderDate, pc.Name;"""
    
       st.write("Here's a summary of spend by product category over time:")
       st.bar_chart(load_data(SQL_QUERY).set_index('ProductCategory')
                    ['spend'], use_container_width=True)
    
       if len(customer) > 0:
           st.write(
               f"Displaying orders for Customer ID: {df.loc[customer, 'CustomerID'].values[0]}")
           SQL_QUERY = f"""SELECT * FROM [SalesLT].[SalesOrderHeader] soh  WHERE soh.CustomerID = {df.loc[customer, 'CustomerID'].values[0]};"""
           st.dataframe(load_data(SQL_QUERY), hide_index=True, width='stretch')
           SQL_QUERY = f"""SELECT sod.* FROM [SalesLT].[SalesOrderHeader] soh INNER JOIN SalesLT.SalesOrderDetail sod on soh.SalesOrderId = sod.SalesOrderId WHERE CustomerID = {df.loc[customer, 'CustomerID'].values[0]};"""
           st.dataframe(load_data(SQL_QUERY), hide_index=True, width='stretch')
    
  4. ระหว่างการนําเข้าและ def page_load() -> None:ให้เพิ่มรหัสนี้

    _connection = None
    
    def get_connection() -> Connection:
        global _connection
        if not _connection:
            load_dotenv()
            _connection = connect(getenv("SQL_CONNECTION_STRING"))
        return _connection
    
    @st.cache_data
    def load_data(SQL_QUERY) -> pd.DataFrame:
        data = pd.read_sql_query(SQL_QUERY, get_connection())
        return data
    
  5. ค้นหารหัสนี้

    def main():
        print("Hello from rapid-protyping-qs!")
    
  6. แทนที่ด้วยรหัสนี้

    def main() -> None:
        page_load()
        if _connection:
            _connection.close()
    
  7. บันทึกและปิดmain.py

บันทึกสตริงการเชื่อมต่อ

  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=ActiveDirectoryInteractive"
    

ใช้ uv run เพื่อเรียกใช้สคริปต์

เคล็ดลับ

เมื่อต้องการใช้การรับรองความถูกต้องของ Microsoft Entra ใน macOS คุณต้องเข้าสู่ระบบผ่านส่วนขยาย Azure Repos ใน Visual Studio Code หรือโดยการเรียกใช้az loginผ่าน Azure Command-Line Interface (CLI)

  1. ในหน้าต่างเทอร์มินัลจากก่อนหน้านี้ หรือหน้าต่างเทอร์มินัลใหม่ที่เปิดไปยังไดเร็กทอรีเดียวกัน ให้เรียกใช้คําสั่งต่อไปนี้

     uv run streamlit run main.py
    
  2. รายงานของคุณจะเปิดขึ้นในแท็บใหม่ในเว็บเบราว์เซอร์ของคุณ

  3. ลองใช้รายงานของคุณเพื่อดูว่ามันทํางานอย่างไร หากคุณเปลี่ยนแปลงอะไร ให้บันทึก main.py และใช้ตัวเลือกการโหลดซ้ําที่มุมขวาบนของหน้าต่างเบราว์เซอร์

  4. หากต้องการแชร์ต้นแบบของคุณ ให้คัดลอกไฟล์ทั้งหมดยกเว้นโฟลเดอร์ไปยัง .venv เครื่องอื่น โฟลเดอร์จะ .venv ถูกสร้างขึ้นใหม่ด้วยการเรียกใช้ครั้งแรก

ขั้นตอนถัดไป

เยี่ยมชมที่เก็บ GitHub ของ mssql-python ไดรเวอร์เพื่อดูตัวอย่างเพิ่มเติม เพื่อแสดงความคิดเห็นหรือรายงานปัญหา