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 147 yazı
Erkan ŞİRİN
Erkan ŞİRİN
2014'ten beri hem akademik alanda hem de sektörde pratik anlamda büyük veri ve veri bilimi ile ilgili çalışmalar yürütmektedir. Büyük veri ve veri bilimi ile ilgili birçok kurum ve şirkete danışmanlık ve eğitimler vermekte, projeler icra etmektedir. Çalışma alanları: büyük veri platformlarının kurulum ve yönetimi, büyük veri üzerinde makine öğrenmesi, olağan dışılık ve sahtecilik tespiti, akan veri işleme ve veri hazırlama sürecidir.
Yorumlar (2 yorum)
Kübra Burçak
Kübra Burçak Cevapla
- 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 Cevapla
    - 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 cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara