Σημείωση
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να συνδεθείτε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Σε αυτήν τη γρήγορη εκκίνηση, χρησιμοποιείτε Streamlit για να δημιουργήσετε γρήγορα μια αναφορά, επιτρέποντάς σας να συλλέγετε γρήγορα σχόλια από τους χρήστες για να διασφαλίσετε ότι βρίσκεστε στο σωστό δρόμο. Μπορείτε να χρησιμοποιήσετε το πρόγραμμα οδήγησης για την mssql-python Python για να συνδεθείτε στη βάση δεδομένων SQL στο Fabric και να διαβάσετε τα δεδομένα που φορτώνονται στην αναφορά σας.
Το mssql-python πρόγραμμα οδήγησης δεν απαιτεί εξωτερικές εξαρτήσεις σε μηχανήματα Windows. Το πρόγραμμα οδήγησης εγκαθιστά όλα όσα χρειάζεται με μία μόνο pip εγκατάσταση, επιτρέποντάς σας να χρησιμοποιήσετε την πιο πρόσφατη έκδοση του προγράμματος οδήγησης για νέα σενάρια χωρίς να σπάσετε άλλα σενάρια που δεν έχετε χρόνο να αναβαθμίσετε και να δοκιμάσετε.
Τεκμηρίωση | Πηγαίος κώδικας | Πακέτο (PyPi) | UV
Προαπαιτούμενα
Φορτώστε δείγματα δεδομένων της AdventureWorks στη βάση δεδομένων SQL.
Πύθωνας 3
Εάν δεν έχετε ήδη Python, εγκαταστήστε τον χρόνο εκτέλεσης Python και τη διαχείριση πακέτων pip από python.org.
Προτιμάτε να μην χρησιμοποιείτε το δικό σας περιβάλλον; Ανοίξτε ως devcontainer χρησιμοποιώντας χώρους κώδικα GitHub.
Κώδικας του Visual Studio με τις ακόλουθες επεκτάσεις:
Εάν δεν έχετε
uvήδη , εγκαταστήστεuvακολουθώντας τις οδηγίες από https://docs.astral.sh/uv/getting-started/installation/το .Εγκαταστήστε εφάπαξ προαπαιτούμενα για το λειτουργικό σύστημα.
Δημιουργήστε το έργο και εκτελέστε τον κώδικα
- Δημιουργία νέου έργου
- Προσθήκη εξαρτήσεων
- Εκκινήστε τον κώδικα του Visual Studio
- Ενημέρωση pyproject.toml
- Ενημέρωση main.py
- Αποθήκευση της συμβολοσειράς σύνδεσης
- Χρησιμοποιήστε το uv run για να εκτελέσετε το σενάριο
Δημιουργία νέου έργου
Ανοίξτε μια γραμμή εντολών στον κατάλογο ανάπτυξης. Εάν δεν έχετε, δημιουργήστε έναν νέο κατάλογο που ονομάζεται
python,scripts, κ.λπ. Αποφύγετε φακέλους στο OneDrive σας, ο συγχρονισμός μπορεί να επηρεάσει τη διαχείριση του εικονικού σας περιβάλλοντος.Δημιουργήστε ένα νέο έργο με
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 .
Ενημέρωση 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 αντιμετωπίζει προβλήματα με την επίλυση πακέτων, πρέπει να ενημερώσετε τον διερμηνέα για να χρησιμοποιήσετε το εικονικό περιβάλλον.
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 είτε εκτελώντας az login μέσω του Azure Command-Line Interface (CLI).
Στο παράθυρο τερματικού από πριν ή σε ένα νέο παράθυρο τερματικού ανοιχτό στον ίδιο κατάλογο, εκτελέστε την ακόλουθη εντολή.
uv run streamlit run main.pyΗ αναφορά σας ανοίγει σε μια νέα καρτέλα στο πρόγραμμα περιήγησης Web.
Δοκιμάστε την αναφορά σας για να δείτε πώς λειτουργεί. Εάν αλλάξετε κάτι, αποθηκεύστε
main.pyκαι χρησιμοποιήστε την επιλογή επαναφόρτωσης στην επάνω δεξιά γωνία του παραθύρου του προγράμματος περιήγησης.Για να κάνετε κοινή χρήση του πρωτοτύπου σας, αντιγράψτε όλα τα αρχεία εκτός από το
.venvφάκελο στο άλλο μηχάνημα. Ο.venvφάκελος δημιουργείται ξανά με την πρώτη εκτέλεση.
Επόμενο βήμα
Επισκεφτείτε το αποθετήριο GitHub του mssql-python προγράμματος οδήγησης για περισσότερα παραδείγματα, για να συνεισφέρετε ιδέες ή να αναφέρετε προβλήματα.