หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
ในการเริ่มต้นใช้งานด่วนนี้ คุณจะใช้ Streamlit เพื่อสร้างรายงานได้อย่างรวดเร็ว ซึ่งช่วยให้คุณสามารถรวบรวมคําติชมของผู้ใช้ได้อย่างรวดเร็วเพื่อให้แน่ใจว่าคุณมาถูกทางแล้ว คุณใช้ mssql-python ไดรเวอร์สําหรับ Python เพื่อเชื่อมต่อกับ ฐานข้อมูล SQL ของคุณใน Fabric และอ่านข้อมูลที่โหลดลงในรายงานของคุณ
mssql-pythonไดรเวอร์ไม่ต้องการการพึ่งพาภายนอกใดๆ บนเครื่อง Windows ไดรเวอร์จะติดตั้งทุกอย่างที่จําเป็นด้วยการติดตั้งเพียงครั้งเดียว pip ช่วยให้คุณใช้ไดรเวอร์เวอร์ชันล่าสุดสําหรับสคริปต์ใหม่ได้โดยไม่ทําลายสคริปต์อื่นๆ ที่คุณไม่มีเวลาอัปเกรดและทดสอบ
เอกสารประกอบ | ซอร์สโค้ด | mssql-pythonแพ็คเกจ (PyPi) | ยูวี
ข้อกําหนดเบื้องต้น
หลาม 3
หากคุณยังไม่มี Python ให้ติดตั้งรันไทม์ Python และตัวจัดการแพ็คเกจ pip จาก python.org
ไม่ต้องการใช้สภาพแวดล้อมของคุณเองหรือไม่? เปิดเป็น devcontainer โดยใช้ GitHub Codespaces
Visual Studio Code ที่มีส่วนขยายต่อไปนี้:
หากคุณยังไม่มี
uvให้ติดตั้งuvโดยทําตามคําแนะนําจาก https://docs.astral.sh/uv/getting-started/installation/.ติดตั้งข้อกําหนดเบื้องต้นเฉพาะระบบปฏิบัติการแบบใช้ครั้งเดียว
apk add libtool krb5-libs krb5-dev
สร้างโครงการและเรียกใช้โค้ด
- สร้างโครงการใหม่
- เพิ่มการขึ้นต่อกัน
- เปิดใช้ Visual Studio Code
- อัปเดต pyproject.toml
- อัปเดต main.py
- บันทึกสตริงการเชื่อมต่อ
- ใช้ uv run เพื่อเรียกใช้สคริปต์
สร้างโครงการใหม่
เปิดพรอมต์คําสั่งในไดเรกทอรีการพัฒนาของคุณ หากคุณไม่มี ให้สร้างไดเร็กทอรีใหม่ที่เรียกว่า
python,scriptsฯลฯหลีกเลี่ยงโฟลเดอร์บน OneDrive ของคุณการซิงโครไนซ์อาจรบกวนการจัดการสภาพแวดล้อมเสมือนของคุณสร้างโปรเจ็กต์ใหม่ด้วย
uvuv 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
pyproject.toml มีข้อมูลเมตาสําหรับโครงการของคุณ เปิดไฟล์ในโปรแกรมแก้ไขที่คุณชื่นชอบ
อัปเดตคําอธิบายให้สื่อความหมายมากขึ้น
description = "A quick example of rapid prototyping using the mssql-python driver and Streamlit."บันทึกและปิดไฟล์
อัปเดต main.py
เปิดไฟล์ชื่อ
main.py. ควรคล้ายกับตัวอย่างนี้def main(): print("Hello from rapid-protyping-qs!") if __name__ == "__main__": main()ที่ด้านบนของไฟล์ ให้เพิ่มการนําเข้าต่อไปนี้เหนือบรรทัดด้วย
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ระหว่างการนําเข้าและบรรทัดที่มี
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')ระหว่างการนําเข้าและ
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ค้นหารหัสนี้
def main(): print("Hello from rapid-protyping-qs!")แทนที่ด้วยรหัสนี้
def main() -> None: page_load() if _connection: _connection.close()บันทึกและปิด
main.py
บันทึกสตริงการเชื่อมต่อ
เปิด
.gitignoreไฟล์และเพิ่มการยกเว้นสําหรับ.envไฟล์ ไฟล์ของคุณควรคล้ายกับตัวอย่างนี้ อย่าลืมบันทึกและปิดเมื่อเสร็จแล้ว# Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv # Connection strings and secrets .envในไดเร็กทอรีปัจจุบัน ให้สร้างไฟล์ใหม่ชื่อ
.env.ภายใน
.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)
ในหน้าต่างเทอร์มินัลจากก่อนหน้านี้ หรือหน้าต่างเทอร์มินัลใหม่ที่เปิดไปยังไดเร็กทอรีเดียวกัน ให้เรียกใช้คําสั่งต่อไปนี้
uv run streamlit run main.pyรายงานของคุณจะเปิดขึ้นในแท็บใหม่ในเว็บเบราว์เซอร์ของคุณ
ลองใช้รายงานของคุณเพื่อดูว่ามันทํางานอย่างไร หากคุณเปลี่ยนแปลงอะไร ให้บันทึก
main.pyและใช้ตัวเลือกการโหลดซ้ําที่มุมขวาบนของหน้าต่างเบราว์เซอร์หากต้องการแชร์ต้นแบบของคุณ ให้คัดลอกไฟล์ทั้งหมดยกเว้นโฟลเดอร์ไปยัง
.venvเครื่องอื่น โฟลเดอร์จะ.venvถูกสร้างขึ้นใหม่ด้วยการเรียกใช้ครั้งแรก
ขั้นตอนถัดไป
เยี่ยมชมที่เก็บ GitHub ของ mssql-python ไดรเวอร์เพื่อดูตัวอย่างเพิ่มเติม เพื่อแสดงความคิดเห็นหรือรายงานปัญหา