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, bir Python betiğini oluşturduğunuz ve örnek verilerle yüklediğiniz bir veritabanına bağlarsınız.
pyodbc Python sürücüsünü kullanarak veritabanınıza bağlanır ve verileri okuma ve yazma gibi temel işlemleri gerçekleştirirsiniz.
pyodbc belgeleri | pyodbc kaynak kodu | Paket (PyPi)
Ö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.
pyodbcpaketini PyPI'den edinin.SQL Server, Azure SQL Veritabanı veya Fabric'deki SQL veritabanında, örnek bir şema ve geçerli bir bağlantı dizesi.
Kurulum
Python sürücüsünü kullanarak pyodbc bir uygulama geliştirmek üzere geliştirme ortamınızı yapılandırmak için bu adımları izleyin.
Uyarı
Bu sürücü SQL Server'da, Doku'daki SQL veritabanında ve Azure SQL Veritabanı'nda varsayılan olarak etkinleştirilen Tablosal Veri Akışı (TDS) protokollerini kullanır. Ek yapılandırma gerekmez.
pyodbc paketini yükleme
pyodbc Paketi PyPI'dan alın.
Boş bir dizinde bir komut istemi açın.
pyodbcpaketini yükleyin.pip install pyodbc
python-dotenv paketini yükleme
PyPI'den python-dotenv alın.
Aynı dizinde paketi yükleyin
python-dotenv.pip install python-dotenv
Yüklü paketleri denetleme
Hedeflenen paketlerinizin yüklendiğini doğrulamak için PyPI komut satırı aracını kullanabilirsiniz.
ile
pip listyüklü paketlerin listesini denetleyin.pip list
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.
Azure portalını kullanarak dakikalar içinde SQL veritabanı oluşturma
ODBC
Bağlantı dizeleri sekmesinden bağlantı dizesini kopyalayın.
Kodu çalıştır
Yeni dosya oluşturma
app.pyadlı yeni bir dosya oluşturun.Modül docstring ekleyin.
""" Connects to a SQL database using pyodbc """pyodbcpaketini içeri aktarın.from os import getenv from dotenv import load_dotenv from pyodbc import connectpyodbc.connectbir SQL veritabanına bağlanmak için işlevini kullanın.load_dotenv() conn = connect(getenv("SQL_CONNECTION_STRING"))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. Buradaki örneği gerçek bağlantı dizesi değerinizle değiştirin.SQL_CONNECTION_STRING="Driver={ODBC Driver 18 for SQL Server};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. Fabric’de bir Azure SQL Veritabanı veya bir 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.
Sorgu yürütme
Sorguyu yürütmek ve sonuçları ayrıştırmak için SQL sorgu dizesi kullanın.
SQL sorgu dizesi için bir değişken oluşturun.
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; """Veritabanındaki bir sorgudan sonuç kümesi almak için kullanın
cursor.execute.cursor = conn.cursor() cursor.execute(SQL_QUERY)Uyarı
Bu işlev temelde herhangi bir sorguyu kabul eder ve cursor.fetchone() kullanımıyla yinelenebilen bir sonuç kümesi döndürür.
Veritabanındaki tüm kayıtları almak için
cursor.fetchall, birforeachdöngü ile kullanın. Ardından kayıtları yazdırın.records = cursor.fetchall() for r in records: print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")Dosyayı
app.py.Bir terminal açın ve uygulamayı test edin.
python app.pyBeklenen çıktı budur.
29485 1 Professional Sales and Service 29531 1 Remarkable Bike Store 29546 1 Bulk Discount Store 29568 1 Coalition Bike Company 29584 1 Futuristic Bikes
İşlem olarak bir satır ekle
Bir INSERT deyimini güvenli bir şekilde gerçekleştirin ve parametreleri aktarın. Parametrelerin değer olarak geçirilmesi uygulamanızı SQL ekleme saldırılarına karşı korur.
randrangekitaplığındanrandomiçeri aktarmasınıapp.pyüst kısmına ekleyin.from random import randrangeapp.pySonuna rastgele bir ürün numarası oluşturmak için kod ekleyin.productNumber = randrange(1000)Tavsiye
Burada rastgele bir ürün numarası oluşturmak, bu örneği birden çok kez çalıştırabilmenizi sağlar.
SQL deyimi dizesi oluşturun.
SQL_STATEMENT = """ INSERT SalesLT.Product ( Name, ProductNumber, StandardCost, ListPrice, SellStartDate ) OUTPUT INSERTED.ProductID VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP) """cursor.executekullanarak ifadeyi yürütün.cursor.execute( SQL_STATEMENT, ( f'Example Product {productNumber}', f'EXAMPLE-{productNumber}', 100, 200 ) )cursor.fetchvalkullanarak tek sonucun ilk sütununu getirin, sonucun benzersiz tanımlayıcısını yazdırın veconnection.commitkullanarak işlemi bir transaksiyon olarak gerçekleştirin.resultId = cursor.fetchval() print(f"Inserted Product ID : {resultId}") conn.commit()Tavsiye
İsteğe bağlı olarak, işlemi geri almak için kullanabilirsiniz
connection.rollback.cursor.closeveconnection.closekullanarak imleci ve bağlantıyı kapatın.cursor.close() conn.close()Dosyayı
app.pyve uygulamayı yeniden test edin.python app.pyBeklenen çıktı budur.
Inserted Product ID : 1001
Sonraki adım
Fikirlere pyodbc katkıda bulunmak veya sorunları bildirmek için daha fazla örnek için sürücü GitHub deposunu ziyaret edin.