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…
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”)
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…