Skip to main content

Koneksi Database MySQL/MariaDB dan Python

koneksi database mysql python mariadb

Belajar Python. Membuat aplikasi python ataupun menggunakan bahasa pemrograman lain, untuk kepentingan tertentu membutuhkan basis data. Dan ada banyak pilihan aplikasi DBMS (Database Managemeng System) yang akan digunakan, kembali lagi pada kebutuhan untuk menggunakan basis data yang mana. Dan khusus pada halaman ini saya memilih MySQL, mempelajari bagaimana membuat koneksi database MySQL dan python.

MySQL salah satu dari banyak database yang populer, dan biasa digunakan pada aplikasi berbasis web. Tapi MySQL mendukung juga untuk digunakan pada bahasa pemrograman lain termasuk Python, selain itu juga basis data ini tidak berbayar alias gratis. Tulisan ini juga bisa dipraktekkan menggunakan MaridDB karena keduanya hampir sama dan juga sama-sama populer.

Python memiliki standar dalam melakukan koneksi database yang disebut Python DB-API, dan sebagian besar database yang ada dapat terkoneksi dengannya. Beberapa pilihan database yang bisa digunakan untuk aplikasi Python kamu.

  • Oracle
  • MySQL
  • mSQL
  • GadFly
  • PostgreSQL
  • Microsoft SQL Server 2000
  • Informix
  • Interbase
  • Sybase
  • SQLite

DB-API menyediakan struktur standar minimal untuk dapat bekerja dengan database menggunakan python dan menggunakan syntax yang memungkinkan. API ini mencakup

  • Mengimpor modul API
  • Mendapatkan koneksi ke database
  • Melakukan SQL dan prosedur penyimpanan
  • Menutup koneksi database

Kalau kamu tidak mau repot dengan instalasi modul, python sudah memiliki standar database yang disupportnya yaitu SQLite. Seperti yang sudah disampaikan di atas, saya akan mencoba mempelajari bagaimana konsep koneksi database MySQL dan Python.

Back to top

1) Persiapan

Sebelumnya kita akan mempersiapkan terlebih dahulu kebutuhan yang diperlukan.

  1. Python 3, tentu saja persiapan pertama harus sudah terinstall python 3 pada sistem kamu.
  2. MySQL server atau MariaDB server, pilih salah satu dan pastikan sudah berjalan dengan baik.
  3. Virtualenv Python
  4. Koneksi Internet

Sekarang persiapkan dulu databasenya, saya membuat sebuah database bernama demopy lalu mengisi dengan tabel orang dan memasukkan data pada tabel orang. Dan jangan lupa juga untuk menyiapkan satu user beserta passwordnya agar bisa mengakses ke database.

login mariadb
Back to top

2) Mysql Connector

Pada percobaan pertama, saya menggunakan mysql-connector untuk koneksi ke database. Untuk itu install terlebih dahulu menggunakan pip. pip install mysql-connector, karena ada error saat install mysql-connector saya mencoba untuk upgrade pip dan setuptools kemudian coba install mysql-connector kembali. Dan ternyata berhasil. Modul ini juga bekerja untuk MariaDB, saya menggunakan MariaDB 10.3.22-MariaDB-0+deb10u1 Debian 10 pada praktik ini.

Kemudian, membuat script berikut ini untuk melakukan tes koneksi ke database.

import mysql.connector
from mysql.connector import errorcode

try:
    conx = mysql.connector.connect(user='{user}', password='{password}', host='localhost', database='demopy')
except mysql.connector.Error as err:
    if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
        print('Mungkin salah username dan password')
    elif err.errno == errorcode.ER_BAD_DB_ERROR:
        print('database tidak ada')
    else:
        print(err)
else:
    print('Koneksi ke database berhasil')
    conx.close()

Keterangan Kode:

  1. Pertama import modul mysql-connection dan juga errorcode
  2. kemudian membuat koneksi ke database pada baris ke 5, sesuaikan dengan informasi login pada database kamu pada:
    {user} dengan username yang digunakan untuk login
    {password} dengan password milik username
    localhost tidak perlu diganti karena umumnya menggunakan localhost
    demopy disesuaikan dengan database miliki kamu
  3. Pada blok except untuk menampilkan pesan error apabila terjadi kesalahan pada koneksi database, error code bisa disesuaikan dengan kondisi yang kalian inginkan.
  4. Bila koneksi ke database berhasil maka blok except akan dilewati dan langsung menuju ke baris 13 menampilkan print('Koneksi ke database berhasil') serta menutup koneksi database conx.close()
test pertama

Saya melakukan percobaan script ini dalam 4 kondisi, pertama username/password dibuat salah, kedua database dibuat salah, ketiga semua benar, dan keempat server database di stop. Script berjalan sesuai dengan keinginan.

Back to top

3) PyMySQL

Setelah sukses mengkoneksikan python ke database menggunakan mysql-connector, saya mencoba menggunakan modul PyMySQL yang juga bisa bekerja dengan MySQL dan MariaDB. Install dengan PIP pip install pymysql

pymysql python
import pymysql

db = pymysql.connect('localhost', 'pma', 'rahasia', 'demopy')
c = db.cursor()
c.execute('SELECT VERSION()')
d = c.fetchone()
print('Versi Database : %s' % d)
db.close()

Pada script kedua ini, saya hanya mencoba untuk memeriksa versi database yang digunakan, pada variabel db ini untuk melakukan koneksi ke database, urutan dimulai dari host (localhost), username, password, dan database.

test kedua

Dari dua percobaan dengan modul berbeda, ternyata sangat mudah melakukan koneksi database MySQL dan Python. Berbekal dengan dua modul ini, kamu bisa membuat aplikasi python yang menggunakan database. Sekarang tinggal pilih lebih suka modul yang mana.

Back to top

4) mysql-connector-python

Setelah menelusuri lagi tentang koneksu database MySQL dan Python, saya menemukan satu lagi modul yang digunakan untuk koneksi ke database. Proses installasi berhasil lancar tidak ada kendala, modul ini membutuhkan Python Protobuf versi 3 keatas, dnspython, dan lz4 untuk kompresi.

Tapi, dalam percobaan ketiga koneksi database MySQL dan Python dengan modul mysql-connector-python ini belum berhasil. Masih menampilkan error raise InterfaceError("Cannot connect to host: {0}".format(error)) mysqlx.errors.InterfaceError: Cannot connect to host: [Errno 111] Connection refused . Padahal percobaan pertama dan kedua langsung berhasil, entah yang ketiga ini belum berhasil. Mungkin ada setting di database server yang belum benar pada sistem saya. Atau mungkin karena menggunakan MariaDB dan bukan MySQL. Sebab sepertinya ini dibuat oleh MySQL, karena tutorialnya ada di website mysql.com ini alamat lengkapnya https://dev.mysql.com/doc/dev/connector-python/8.0/

Back to top

5) Kesimpulan

Setelah melakukan tiga percobaan koneksi database MySQL dan Python, saya baru berhasil dengan dua percobaan saja. Meski hanya dua yang sudah berhasil, tapi ini cukup untuk bekal membuat aplikasi yang membutuhkan koneksi ke database MySQL dan MariaDB. Kedua percobaan ini menggunakan python 3.7.3, MariaDB 10.3.22-MariaDB-0+deb10u1, dan OS Devuan Linux.

Kalau teman-teman ada yang berhasil menggunakan modul mysql-connector-python, boleh berbagi trik pada kolom komentar di bawah.

Back to top