Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu hızlı başlangıçta, Streamlit'yı kullanarak hızlı bir şekilde bir rapor oluşturacaksınız. Kullanıcı geri bildirimlerini toplayarak doğru yolda olduğunuzdan emin olabilirsiniz. mssql-python Python sürücüsünü kullanarak veritabanınıza bağlanır ve raporunuza yüklenen verileri okursunuz.
Sürücü, mssql-python Windows makinelerinde dış bağımlılık gerektirmez. Sürücü, ihtiyaç duyduğu her şeyi tek pip bir yüklemeyle yükler ve yükseltmeye ve test etmeye vaktiniz olmayan diğer betikleri bozmadan yeni betikler için sürücünün en son sürümünü kullanmanıza olanak sağlar.
mssql-python belgeleri | mssql-python kaynak kodu | Paket (PyPi) | Uv
Önkoşullar
Python 3
Eğer Python zaten yüklü değilse, python.org'dan Python çalışma zamanı ve Python Paket Dizini (PyPI) paket yöneticisini yükleyin.
Kendi ortamınızı kullanmamak mı tercih ediyorsunuz? GitHub Codespaces kullanarak devcontainer olarak açın.
Visual Studio Code aşağıdaki uzantılarla:
Visual Studio Code için Python uzantısı
Henüz
uvyoksa,uvadresindeki yönergeleri izleyerek https://docs.astral.sh/uv/getting-started/installation/ yükleyin.SQL Server, Azure SQL Veritabanı veya Fabric'teki SQL veritabanından biri üzerinde
AdventureWorks2025örnek şema ve geçerli bir bağlantı dizesi.Tek seferlik işletim sistemine özgü önkoşulları yükleyin.
SQL veritabanı oluşturma
Bu hızlı başlangıç için Microsoft SQL Server'da AdventureWorks2025 Basit şeması, Doku'daki SQL veritabanı veya Azure SQL Veritabanı gerekir.
Projeyi oluşturma ve kodu çalıştırma
- Yeni proje oluşturma
- Bağımlılık ekleme
- Visual Studio Code'ı başlatma
- pyproject.toml güncelleştirme
- Main.py'yi Güncelle
- Bağlantı dizesini kaydetme
- Betik dosyasını çalıştırmak için uv run kullanın
Yeni proje oluşturma
Geliştirme dizininizde bir komut istemi açın. Bir tane yoksa,
python,scriptsgibi bir adla yeni bir dizin oluşturun. OneDrive'daki klasörleri kullanmaktan kaçının, çünkü eşitleme sanal ortamınızı yönetmenize engel olabilir.-
uv init rapid-prototyping-qs cd rapid-prototyping-qs
Bağımlılık ekleme
Aynı dizinde , mssql-pythonve streamlit paketlerini yükleyinpython-dotenv.
uv add mssql-python python-dotenv streamlit
Visual Studio Code'ı başlatma
Aynı dizinde aşağıdaki komutu çalıştırın.
code .
pyproject.toml güncelle
pyproject.toml, projenizin meta verilerini içerir. Dosyayı sık kullandığınız düzenleyicide açın.
Açıklamayı daha açıklayıcı olacak şekilde güncelleştirin.
description = "A quick example of rapid prototyping using the mssql-python driver and Streamlit."Dosyayı kaydedin ve kapatın.
Güncelle main.py
adlı
main.pydosyayı açın. Bu örneğe benzer olmalıdır.def main(): print("Hello from rapid-protyping-qs!") if __name__ == "__main__": main()Dosyanın en üstüne,
def main()satırının üstüne gelecek şekilde aşağıdaki importları ekleyin.Tavsiye
Visual Studio Code paketleri çözümleme konusunda sorun yaşıyorsa, yorumlayıcıyı sanal ortamı kullanacak şekilde güncelleştirmeniz gerekir.
from os import getenv from dotenv import load_dotenv from mssql_python import connect, Connection import pandas as pd import streamlit as stİçeri aktarmalar ile satır
def main()arasına aşağıdaki kodu ekleyin.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')İmportlar ile
def page_load() -> None:arasında, bu kodu ekleyin._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 dataBu kodu bulun.
def main(): print("Hello from rapid-protyping-qs!")Bu kodla değiştirin.
def main() -> None: page_load() if _connection: _connection.close()kaydedin ve kapatın
main.py.
Bağlantı dizesini kaydetme
.gitignoredosyasını açın ve.envdosyaları için bir dışlama ekleyin. Dosyanız bu örneğe benzer olmalıdır. İşiniz bittiğinde kaydetmeyi ve kapatmayı unutmayın.# Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv # Connection strings and secrets .envGeçerli dizinde adlı
.envyeni bir dosya oluşturun.dosyasının içine
.envbağlantı dizeniz için adlıSQL_CONNECTION_STRINGbir girdi ekleyin. Buradaki örneği gerçek bağlantı dizesi değerinizle değiştirin.SQL_CONNECTION_STRING="Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Tavsiye
Burada kullanılan bağlantı dizesi büyük ölçüde bağlandığınız SQL veritabanının türüne bağlıdır. Eğer bir Azure SQL Veritabanına veya Fabric'teki SQL veritabanına bağlanıyorsanız, bağlantı dizeleri sekmesindeki ODBC bağlantı dizesini kullanın. Senaryonuza bağlı olarak kimlik doğrulama türünü ayarlamanız gerekebilir. Bağlantı dizeleri ve söz dizimi hakkında daha fazla bilgi için bkz. bağlantı dizesi söz dizimi başvurusu.
Betiği yürütmek için uv çalıştır komutunu kullan
Tavsiye
MacOS'ta Microsoft Entra Kimlik Doğrulaması'nı kullanmak için Visual Studio Code'daki Azure Repos uzantısı aracılığıyla veya az login aracılığıyla çalıştırarak oturum açmanız gerekir.
Önceki terminal penceresinde veya aynı dizine açılan yeni bir terminal penceresinde aşağıdaki komutu çalıştırın.
uv run streamlit run main.pyRaporunuz web tarayıcınızda yeni bir sekmede açılır.
Nasıl çalıştığını görmek için raporunuzu deneyin. Herhangi bir şeyi değiştirirseniz, tarayıcı penceresinin sağ üst köşesindeki yeniden yükleme seçeneğini kaydedin
main.pyve kullanın.Prototipinizi paylaşmak için
.venvklasör dışındaki tüm dosyaları diğer makineye kopyalayın. Klasör.venvilk çalıştırmayla yeniden oluşturulur.
Sonraki adım
Fikirlere mssql-python katkıda bulunmak veya sorunları bildirmek için daha fazla örnek için sürücü GitHub deposunu ziyaret edin.