Python SQL Server Bağlantısı

Hepimizin bildiği gibi en yaygın kullanılan veri tabanlarından birisi de Microsoft SQL Server’dır. Bu yazımızda veri bilimi çalışmalarında yaygın olarak kullanılan dillerden birisi olan Python ile MSSQL Server veri tabanına bağlanarak basit bir SELECT sorgusunu çalıştıracağız. Bu yazıyı hazırlarken kullandığım yazılım ve versiyonları şu şekildedir.

  • OS: Windows 10
  • SQL Server: SQL Server 2012
  • Python: Python 3.4

SQL Server’a bağlanabilmemiz için öncelikle pypyodbc paketini pip ile yüklememiz gerekir. Komut satırını çalıştırarak pip install pypyodbc komutunu yazıp çalıştırıyoruz. Komut paketi yükleyecektir.

Bu paketi yükledikten sonra Python geliştirme ortamımızı (IDE) açıp (ben PyCharm kullanıyorum) .py uzantılı bir dosya oluşturuyoruz. Oluşturduğumuz dosyaya aşağıdaki kodları yazıyoruz.

import pypyodbc
connection = pypyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=AdventureWorks2012;UID=sa;PWD=Şifre')

cursor = connection.cursor()
cursor.execute("SELECT * FROM HumanResources.Department")
sonuc = cursor.fetchall()
for i in sonuc:
    print(i)

Beklenen çıktı:

(1, 'Engineering', 'Research and Development', datetime.datetime(2002, 6, 1, 0, 0))
(2, 'Tool Design', 'Research and Development', datetime.datetime(2002, 6, 1, 0, 0))
(3, 'Sales', 'Sales and Marketing', datetime.datetime(2002, 6, 1, 0, 0))
(4, 'Marketing', 'Sales and Marketing', datetime.datetime(2002, 6, 1, 0, 0))
(5, 'Purchasing', 'Inventory Management', datetime.datetime(2002, 6, 1, 0, 0))
(6, 'Research and Development', 'Research and Development', datetime.datetime(2002, 6, 1, 0, 0))
(7, 'Production', 'Manufacturing', datetime.datetime(2002, 6, 1, 0, 0))
(8, 'Production Control', 'Manufacturing', datetime.datetime(2002, 6, 1, 0, 0))
(9, 'Human Resources', 'Executive General and Administration', datetime.datetime(2002, 6, 1, 0, 0))
(10, 'Finance', 'Executive General and Administration', datetime.datetime(2002, 6, 1, 0, 0))
(11, 'Information Services', 'Executive General and Administration', datetime.datetime(2002, 6, 1, 0, 0))
(12, 'Document Control', 'Quality Assurance', datetime.datetime(2002, 6, 1, 0, 0))
(13, 'Quality Assurance', 'Quality Assurance', datetime.datetime(2002, 6, 1, 0, 0))
(14, 'Facilities and Maintenance', 'Executive General and Administration', datetime.datetime(2002, 6, 1, 0, 0))
(15, 'Shipping and Receiving', 'Inventory Management', datetime.datetime(2002, 6, 1, 0, 0))
(16, 'Executive', 'Executive General and Administration', datetime.datetime(2002, 6, 1, 0, 0))

sonuc değişkenimiz <class ‘list’> dir. Yani pyton listesi. Yukarıda Microsoft’un sample veri tabanı olan AdventureWorks2012 veri tabanına bağlanarak Department tablosundaki verileri sorguyla aldık ve liste tipindeki sonuc isimli bir nesnenin içine yazdırdık.

Başka bir yazıda görüşmek dileğiyle, veriyle kalın…

Yazar Hakkında
Toplam 174 yazı
Erkan ŞİRİN
Erkan ŞİRİN
10 yılı aşkın süredir yurtiçi ve yurtdışında sektörde büyük veri mühendisliği, platform yönetimi ve makine öğrenmesi ile ilgili çalışmalar yürütmekte ve aynı zamanda birçok kurum ve şirkete danışmanlık ve eğitimler vermektedir. Çalışma alanları: Data ve MLOps platformları, gerçek zamanlı veri işleme, değişen veriyi yakalama (CDC) ve Lakehouse.
Yorumlar (2 yorum)
Kübra Burçak
Kübra Burçak Yanıtla
- 09:48

Merhabalar..

Aynı kodu Mac’te kullanınca şöyle bir hata veriyor.

OperationalError: (‘01000’, “[01000] [unixODBC][Driver Manager]Can’t open lib ‘SQL Server’ : file not found”)

    Erkan ŞİRİN
    Erkan ŞİRİN Yanıtla
    - 09:56

    Merhaba. Bu yazıda Windows işletim sistemi ile SQL-Python bağlantısını gerçekleştirdik. Mac için durum farklıdır. Sizin için bulabildiğim çözümler:
    1. https://stackoverflow.com/questions/44527452/cant-open-lib-odbc-driver-13-for-sql-server-sym-linking-issue
    2. https://github.com/lionheart/django-pyodbc/wiki/Mac-setup-to-connect-to-a-MS-SQL-Server

    İyi çalışmalar…

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara