Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam panduan cepat ini, Anda menggunakan uv untuk mengelola dependensi dan lingkungan proyek bagi skrip Python yang terhubung ke database yang telah Anda buat dan diisi dengan data sampel. Anda menggunakan mssql-python driver untuk Python untuk menyambungkan ke database Anda dan melakukan operasi dasar, seperti membaca dan menulis data.
Driver mssql-python tidak memerlukan dependensi eksternal apa pun pada komputer Windows. Driver menginstal semua yang dibutuhkan dengan satu pip instalasi, memungkinkan Anda menggunakan versi terbaru driver untuk skrip baru tanpa merusak skrip lain yang belum sempat Anda tingkatkan dan uji.
dokumentasi mssql-python
Prasyarat
Python 3.10 atau yang lebih baru
Jika Anda belum memiliki Python, instal runtime Python dan manajer paket pip dari python.org.
Tidak ingin menggunakan lingkungan Anda sendiri? Ikuti Kontainer dan pengembangan lokal untuk membuat lingkungan devcontainer atau GitHub Codespaces yang dapat direproduksi.
Visual Studio Code dengan ekstensi berikut:
Azure Command-Line Interface (CLI) untuk autentikasi tanpa kata sandi di macOS dan Linux.
Jika Anda belum memiliki
uv, ikuti instruksi penginstalan.Database di SQL Server, Azure SQL Database, atau database SQL di Fabric dengan
AdventureWorks2025skema sampel dan string koneksi yang valid.
Instal prasyarat khusus sistem operasi satu kali. Pengguna Windows dapat melewati langkah ini. Untuk detail platform lengkap, lihat Menginstal mssql-python.
Membuat database SQL
Buat atau sambungkan ke database SQL di salah satu platform berikut:
Membuat proyek dan menjalankan kode
- Membuat proyek baru
- Menambahkan dependensi
- Luncurkan Visual Studio Code
- Memperbarui pyproject.toml
- Memperbarui main.py
- Simpan string koneksi
- Menggunakan uv run untuk menjalankan skrip
Membuat proyek baru
Buka jendela perintah di direktori pengembangan Anda. Jika Anda tidak memilikinya, buat direktori baru, seperti
pythonatauscripts. Hindari folder di OneDrive Anda, karena sinkronisasi dapat mengganggu pengelolaan lingkungan virtual Anda.Buat proyek baru dengan
uv.uv init mssql-python-repeatable-qs cd mssql-python-repeatable-qs
Menambahkan dependensi
Di direktori yang sama, instal paket mssql-python, python-dotenv, dan rich.
uv add mssql-python python-dotenv rich
Luncurkan Visual Studio Code
Di direktori yang sama, jalankan perintah berikut.
code .
Memperbarui pyproject.toml
pyproject.toml berisi metadata untuk proyek Anda. Buka file di editor favorit Anda.
Tinjau isi dari file tersebut. Ini harus mirip dengan contoh ini. Perhatikan versi Python dan dependensi; untuk
mssql-python, gunakan>=guna menentukan versi minimum. Jika Anda lebih suka versi yang tepat, ubah>=sebelum nomor versi menjadi==. Versi yang diselesaikan dari setiap paket disimpan di uv.lock. Lockfile memastikan bahwa pengembang yang mengerjakan proyek menggunakan versi paket yang konsisten. Ini juga memastikan bahwa set versi paket yang sama persis digunakan saat mendistribusikan paket Anda kepada pengguna akhir. Komitkanpyproject.tomldanuv.lock, tinjau perubahan pada berkas lockfile dalam pull request, dan jalankan pemindai dependensi yang disetujui organisasi di CI. Jangan mengedituv.lockfile secara langsung.[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>=0.10.0", "python-dotenv>=1.1.1", "rich>=14.1.0", ]Perbarui deskripsi agar lebih deskriptif.
description = "Connects to a SQL database using mssql-python"Simpan dan tutup file.
Memperbarui main.py
Buka file bernama
main.py. Ini harus mirip dengan contoh ini.def main(): print("Hello from mssql-python-repeatable-qs!") if __name__ == "__main__": main()Di bagian atas file, tambahkan pernyataan impor berikut sebelum baris yang berisi
def main().Tip
Jika Visual Studio Code mengalami masalah dalam menyelesaikan paket, Anda perlu memperbarui penerjemah untuk menggunakan lingkungan virtual.
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 sleepAntara impor dan baris dengan
def main(), tambahkan kode berikut.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)Antara impor dan
def get_results(sleep_time: int = 0) -> None:, tambahkan kode ini._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 cursorTemukan kode ini.
def main(): print("Hello from mssql-python-repeatable-qs!")Ganti dengan kode ini.
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()Simpan dan tutup
main.py.
Simpan string koneksi
.gitignoreBuka file dan tambahkan pengecualian untuk.envfile. File Anda harus mirip dengan contoh ini. Pastikan untuk menyimpan dan menutupnya setelah selesai.# Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv # Connection strings and secrets .envDi direktori saat ini, buat file baru bernama
.env.Di dalam file
.env, tambahkan entri untuk string koneksi Anda yang bernamaSQL_CONNECTION_STRING. Ganti contoh di sini dengan nilai string koneksi Anda yang sebenarnya.SQL_CONNECTION_STRING="Server=<server_name>;Database=<database_name>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Penting
Jaga
.envlokal dan di luar kendali sumber. Untuk CI dan lingkungan yang disebarkan, injeksikan string koneksi atau rahasia komponennya dari penyimpanan rahasia platform Anda alih-alih menyalin.envantar mesin.Tip
String koneksi yang digunakan di sini sebagian besar tergantung pada jenis database SQL yang Anda sambungkan. Jika Anda menyambungkan ke Azure SQL Database atau database SQL di Fabric, gunakan string koneksi ODBC dari tab string koneksi. Anda mungkin perlu menyesuaikan jenis autentikasi tergantung pada skenario Anda. Untuk informasi selengkapnya tentang string koneksi dan sintaksnya, lihat referensi sintaks string koneksi.
Menggunakan uv run untuk menjalankan skrip
Tip
Di macOS, baik ActiveDirectoryInteractive dan ActiveDirectoryDefault berfungsi untuk autentikasi Microsoft Entra.
ActiveDirectoryInteractive meminta Anda untuk masuk setiap kali Anda menjalankan skrip. Untuk menghindari permintaan masuk berulang, masuk sekali melalui Azure CLI dengan menjalankan az login, lalu gunakan ActiveDirectoryDefault, yang menggunakan kembali kredensial yang di-cache.
Di jendela terminal dari sebelumnya, atau jendela terminal baru terbuka ke direktori yang sama, jalankan perintah berikut.
uv run main.pySekarang mari kita jalankan lagi tetapi lebih lambat untuk dapat melihat kedua pembaruan status.
uv run main.py --sleep-time 5Berikut adalah output yang diharapkan saat skrip selesai.
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 │ └─────────────┴────────────────────────────────┴─────────────┘Untuk menyebarkan skrip Anda ke komputer lain, salin file proyek, termasuk
pyproject.tomldanuv.lock, tetapi bukan.venvfolder atau file lokal.envapa pun. Buat ulang lingkungan virtual pada eksekusi pertama dan sediakan rahasia melalui lingkungan target.
Langkah berikutnya
Gunakan artikel ini untuk terus membangun:
- Bangun string koneksi untuk mengonfigurasi koneksi untuk berbagai jenis database SQL dan metode autentikasi.
- Menjalankan kueri untuk mempelajari tentang pola kueri, kueri berparameter, dan penanganan hasil.
- Manajemen koneksi untuk menggunakan pengelola konteks, pengumpulan, dan pengaturan koneksi.