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ıç kılavuzunda, oluşturup örnek verilerle yüklediğiniz bir veritabanına bağlanan bir Python betiği için proje bağımlılıklarını ve ortamlarını yönetmek üzere uv kullanırsınız. Veritabanınıza bağlanmak ve veri okuma ve yazma gibi temel işlemleri gerçekleştirmek için Python için mssql-python sürücüsünü kullanıyorsunuz.
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.10 veya üzeri.
Python'larınız yoksa, python.orgPython çalışma zamanını ve pip paket yöneticisini yükleyin.
Kendi ortamınızı kullanmak istemiyor musunuz? Container ve yerel geliştirmeyi takip ederek tekrarlanabilir bir devcontainer veya GitHub Codespaces ortamı oluşturun.
Visual Studio Code aşağıdaki uzantılarla:
- Visual Studio Code için Python uzantısı
macOS ve Linux'ta parolasız kimlik doğrulaması için Azure Command-Line Arabirimi (CLI).
henüz sahip
uvdeğilseniz yükleme yönergelerini izleyin.SQL Server, Azure SQL Veritabanı veya Fabric'teki SQL veritabanından biri üzerinde
AdventureWorks2025örnek şema ve geçerli bir bağlantı dizesi.
İşletim sistemi önkoşullarını yükleme
Tek seferlik işletim sistemine özgü önkoşulları yükleyin. Windows kullanıcıları bu adımı atlayabilir. Platformun tam detayları için mssql-python'u Install sayfasına bakınız.
SQL veritabanı oluşturma
Aşağıdaki platformlardan birinde bir SQL veritabanı oluşturun veya bağlanın:
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. Eğer bir dizin yoksa, yeni bir dizin oluşturun, örneğin
pythonveyascripts. OneDrive'ınızdaki klasörlerden kaçının, çünkü senkronizasyon sanal ortamınızı yönetmenize engel olabilir.-
uv init mssql-python-repeatable-qs cd mssql-python-repeatable-qs
Bağımlılık ekleme
Aynı dizinde , mssql-pythonve python-dotenv paketlerini yükleyinrich.
uv add mssql-python python-dotenv rich
Visual Studio Code'ı başlatma
Aynı dizinde aşağıdaki komutu çalıştırın.
code .
pyproject.toml güncelle
pyproject.tomlDosyayı düzenleyicinizde açın. Bu dosya, projenizin meta verilerini içerir.Dosyanın içeriğini gözden geçirin. Bu örneğe benzer olmalıdır.
mssql-pythoniçin Python sürümüne ve bağımlılığına dikkat edin; en düşük sürümü tanımlamak için>=kullanın. Tam sürümü tercih ediyorsanız, sürüm numarasının önündeki>='yi==ile değiştirin. Her paketin çözülmüş sürümleri uv.lock'ta saklanır. Kilit dosyası, projede çalışan geliştiricilerin tutarlı paket sürümlerini kullanmasını sağlar. Ayrıca, paketinizi son kullanıcılara dağıtırken tam olarak aynı paket sürümleri kümesinin kullanılmasını sağlar.pyproject.tomlveuv.locköğelerinin ikisini de commit edin, çekme isteklerindeki kilit dosyasındaki değişiklikleri inceleyin ve CI'de kuruluş tarafından onaylanmış bir bağımlılık tarayıcısı çalıştırın.uv.lockdosyasını doğrudan düzenlemeyin.[project] name = "mssql-python-repeatable-qs" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.11" dependencies = [ "mssql-python>=1.16.0", "python-dotenv>=1.1.1", "rich>=14.1.0", ]Değeri
descriptiongüncelleyin.description = "Connects to a SQL database using mssql-python"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 mssql-python-repeatable-qs!") if __name__ == "__main__": main()Dosyanın en üstüne,
def main()içeren satırdan önce aşağıdaki importları ekleyin.İpucu
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, Cursor from rich.console import Console from rich.progress import Progress, SpinnerColumn, TextColumn from rich.table import Table from argparse import ArgumentParser from time import sleepİçeri aktarmalar ile satır
def main()arasına aşağıdaki kodu ekleyin.def get_results(sleep_time: int = 0) -> None: with Progress( SpinnerColumn(), TextColumn("[progress.description]{task.description}"), transient=True, ) as progress: task = progress.add_task(description="Connecting to SQL...") cursor = query_sql() # Simulate a slow connection for demo purposes sleep(sleep_time) progress.update(task, description="Formatting results...") 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}") if cursor: cursor.close() # Simulate a slow connection for demo purposes sleep(sleep_time) progress.stop() Console().print(table)İmportlar ile
def get_results(sleep_time: int = 0) -> 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")) # type: ignore return _connection def query_sql() -> Cursor: SQL_QUERY = """ 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; """ conn = get_connection() cursor = conn.cursor() cursor.execute(SQL_QUERY) return cursorBu kodu bulun.
def main(): print("Hello from mssql-python-repeatable-qs!")Bu kodla değiştirin.
def main() -> None: parser = ArgumentParser() parser.add_argument("--sleep-time", type=int, default=0, help="Time to sleep in seconds to simulate slow connection") args = parser.parse_args() if args.sleep_time > 0: get_results(args.sleep_time) else: get_results() 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 aşağıdaki örneğe benzer olmalıdır.# Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv # Connection strings and secrets .envkaydedin ve kapatın
.gitignore.Geçerli dizinde adlı
.envyeni bir dosya oluşturun.dosyasının içine
.envbağlantı dizeniz için adlıSQL_CONNECTION_STRINGbir girdi ekleyin. Yer tutucuları gerçek değerlerinizle değiştirin.SQL_CONNECTION_STRING="Server=<server>;Database=<database>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Important
.envöğesini yerel tutun ve sürüm denetiminden uzak tutun. CI ve dağıtıma alınmış ortamlar için,.envöğesini makineler arasında kopyalamak yerine bağlantı dizesini veya onu oluşturan sırları platformunuzun sır deposundan enjekte edin.Bağlantı dizesi, bağlandığınız SQL veritabanı türüne bağlıdır. Azure SQL Veritabanı veya Fabric'teki SQL veritabanı için, bağlantı dizileri sekmesindeki ODBC bağlantı dizesi'i kullanın ve senaryonuza göre kimlik doğrulama türünü ayarlayın. bağlantı dizesi sözdizimi hakkında daha fazla bilgi için mssql-python için bağlantı dizesi'leri bölümünü inceleyebilirsiniz.
İpucu
macOS'ta hem
ActiveDirectoryInteractivehem deActiveDirectoryDefaultMicrosoft Entra kimlik doğrulaması için çalışır.ActiveDirectoryInteractivebetiği her çalıştırdığınızda oturum açmanızı ister. Tekrar tekrar giriş istemlerini önlemek için, Azure CLIaz loginkomutuyla bir kez giriş yapın veActiveDirectoryDefaultkullanın.ActiveDirectoryDefaultÖnbelleğe alınan kimlik bilgilerini tekrar kullanır.
Betiği yürütmek için uv çalıştır komutunu kullan
Önceki terminal penceresinde veya aynı dizine açılan yeni bir terminal penceresinde aşağıdaki komutu çalıştırın.
uv run main.pyBetiği tekrar gecikmeyle çalıştırın ki her iki durum güncellemesini de görebilesiniz.
uv run main.py --sleep-time 5İşte betik tamamlandığında beklenen çıktı şöyledir.
Orders by Customer ┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓ ┃ Customer ID ┃ Company Name ┃ Order Count ┃ ┡━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩ │ 29485 │ Professional Sales and Service │ 1 │ │ 29531 │ Remarkable Bike Store │ 1 │ │ 29546 │ Bulk Discount Store │ 1 │ │ 29568 │ Coalition Bike Company │ 1 │ │ 29584 │ Futuristic Bikes │ 1 │ └─────────────┴────────────────────────────────┴─────────────┘Scriptinizi başka bir makineye dağıtmak için,
pyproject.tomlveuv.lockdahil proje dosyalarını kopyalayın; ancak.venvklasörünü veya herhangi bir yerel.envdosyasını kopyalamayın. İlk çalışmada sanal ortamı yeniden yaratın ve hedef ortam üzerinden sırlar sağlayın.