Pandas Akses ke Microsoft SQL Server

Kode Lima Detik

import pymssql
import pyodbc
import pandas as pd

# pyodbc
# MSSQL 2000
params00 = 'DRIVER={SQL Server};' \
         'SERVER=.;' \
         'PORT=1433;' \
         'DATABASE=Northwind;' \
         'UID=namapengguna;' \
         'PWD=katasandi;'

cnxn00 = pyodbc.connect(params00)
cursor00 = cnxn00.cursor()
sql00 = 'SELECT * FROM Customers WHERE 1=1'
df00 = pd.read_sql(sql00, cnxn00)

# MSSQL 2014
params14 = 'DRIVER={SQL Server Native Client 11.0};' \
         'SERVER=.\MSSQLSERVER2014;' \
         'PORT=1433;' \
         'DATABASE=AdventureWorks2014;' \
         'UID=namapengguna;' \
         'PWD=katasandi;'

cnxn14 = pyodbc.connect(params14)
cursor14 = cnxn14.cursor()
sql14 = 'SELECT * FROM Person.Person WHERE 1=1'
df14 = pd.read_sql(sql14, cnxn14)

# pymssql
server = '.'
user = 'namapengguna'
password = 'katasandi'
database = 'Northwind'

conn00 = pymssql.connect(server, user, password, database)

ssql00 = 'SELECT * FROM Customers WHERE 1=1'

dfpy00 = pd.read_sql(sql00, conn00)

Data tersimpan di RDBMS adalah keniscayaan. Jaman now semua entitas, bisnis maupun publik, pasti menggunakan RDBMS (yang kadang secara sederhana dibahasakan sebagai database). Bahkan perorangan juga sudah menggunakan, baik secara sadar maupun tidak.

Microsoft SQL Server (MSSQL) adalah salah satu pilihan RDBMS yang kerap kita temukan. Karena itu menjadi vital bagi kita untuk dapat mengaksesnya sebelum mengolah data.

Umumnya pencarian internet akan memunculkan dua library untuk mengakses MSSQL yaitu pyodbc dan pymssql.

Kita akan menggunakan keduanya untuk mengakses database Northwind di MSSQL 2000 (ya, jaman now masih ada pengguna setianya) dan AdventureWorks2014 di MSSQL 2014 Express. Jika pembaca ingin mendapatkan sample databases AdventureWorks silahkan mengunduh di sini.

pyodbc

Instalasi

Instalasi dengan perintah ini di command prompt/terminal/console.

pip install pyodbc

Jika pembaca menemui kesulitan saat melakukan instalasi, silahkan merujuk ini.

Kode Sederhana

Kode yang dapat digunakan untuk mengakses database Northwind (MSSQL 2000) adalah kurang lebih begini.

import pyodbc

params00 = 'DRIVER={SQL Server};' \
'SERVER=.;' \
'PORT=1433;' \
'DATABASE=Northwind;' \
'UID=namapengguna;' \
'PWD=katasandi;'

cnxn00 = pyodbc.connect(params00)
cursor00 = cnxn00.cursor()

Kita uji dengan melakukan query sederhana pada tabel Customers.

sql00 = 'SELECT * FROM Customers WHERE 1=1'
cursor00.execute(sql00)
rows = cursor00.fetchall()

for row in rows:
    print(row)

Halaman Getting started pyodbc memberikan ilustrasi lebih lengkap mengenai penggunaan library tersebut.

Jika ingin melakukan koneksi pada AdventureWorks2014 di MSSQL 2014 dapat menggunakan kode berikut.

params14 = 'DRIVER={SQL Server Native Client 11.0};' \
         'SERVER=.\MSSQLSERVER2014;' \
         'PORT=1433;' \
         'DATABASE=AdventureWorks2014;' \
         'UID=namapengguna;' \
         'PWD=katasandi;'

cnxn14 = pyodbc.connect(params14)
cursor14 = cnxn14.cursor()

Jika diperhatikan, perbedaan ada di parameter driver, server dan database. Dua yang terakhir adalah keniscayaan, sedang daftar driver yang dapat digunakan (sesuai versi MSSQL) dapat dibaca di sini.

Kita coba query sederhana pada tabel Person.Person.

sql14 = 'SELECT * FROM Person.Person WHERE 1=1'
cursor14.execute(sql14)
rows = cursor14.fetchall()

for row in rows:
    print(row)

pandas

Mudah saja, kode yang diperlukan hanya seperti ini.

import pandas as pd

df00 = pd.read_sql(sql00, cnxn00)

Kode di atas untuk mengambil data dari Northwind. Sedang untuk AdventureWorks2014, hampir tidak ada bedanya.

df14 = pd.read_sql(sql14, cnxn14)

Kode lengkap penggunaan pyodbc sebagai berikut.

import pyodbc
import pandas as pd

params00 = 'DRIVER={SQL Server};' \
         'SERVER=.;' \
         'PORT=1433;' \
         'DATABASE=Northwind;' \
         'UID=namapengguna;' \
         'PWD=katasandi;'

cnxn00 = pyodbc.connect(params00)
cursor00 = cnxn00.cursor()

params14 = 'DRIVER={SQL Server Native Client 11.0};' \
         'SERVER=.\MSSQLSERVER2014;' \
         'PORT=1433;' \
         'DATABASE=AdventureWorks2014;' \
         'UID=namapengguna;' \
         'PWD=katasandi;'

cnxn14 = pyodbc.connect(params14)
cursor14 = cnxn14.cursor()

sql00 = 'SELECT TOP 10 * FROM Customers WHERE 1=1'
sql14 = 'SELECT TOP 10 * FROM Person.Person WHERE 1=1'

df00 = pd.read_sql(sql00, cnxn00)
df14 = pd.read_sql(sql14, cnxn14)

pymssql

Instalasi

Sayangnya library ini tidak lagi dikembangkan dan sampai saat tulisan ini dibuat, penulis belum berhasil melakukan koneksi ke MSSQL 2014 tanpa menginstal software tambahan.

Jika pembaca mengetahui kode koneksi ke MSSQL 2014 (atau yang lebih baru) silahkan tinggalkan kode/pranala terkait di komentar.

pip install pymssql

Proses instalasi selengkapnya di sini.

Kode Sederhana

Penggunaan pymssql mirip dengan pyodbc hanya saja kita tidak perlu mendefinisikan driver yang digunakan.

import pymssql

server = '.'
user = 'namapengguna'
password = 'katasandi'
database = 'Northwind'

conn00 = pymssql.connect(server, user, password, database)
cursorpy00 = conn00.cursor(as_dict=False)

ssql00 = 'SELECT * FROM Customers WHERE 1=1'
cursorpy00.execute(sql00)

for row in cursorpy00:
    print(row)
pip install pyodbc

pandas

Mudah saja.

dfpy00 = pd.read_sql(sql00, conn00)

Kode selengkapnya agar pandas dapat mengakses MSSQL 2000 menggunakan pymssql.

import pymssql
import pandas as pd

server = '.'
user = 'namapengguna'
password = 'katasandi'
database = 'Northwind'

conn00 = pymssql.connect(server, user, password, database)

ssql00 = 'SELECT * FROM Customers WHERE 1=1'

dfpy00 = pd.read_sql(sql00, conn00)

Cover Photo by Kevin Ku on Unsplash

2 Replies to “Pandas Akses ke Microsoft SQL Server”

Leave a Reply

Your email address will not be published. Required fields are marked *