Seperti yang kita ketahui, Python adalah bahasa pemrograman yang mendukung hampir semua platform seperti desktop, web dan yang terbaru adalah mobile android dengan kivy, selain itu sebagian besar penggunaan python sebagai dasar scripting untuk berbagai aplikasi.
Tentu saja, sebagai bahasa scripting, python juga mendukung koneksi dengan database, misalnya python secara default mendukung penggunaan SQLite, dan tentu saja juga mendukung database lain seperti database postgresql, mysql, atau nosql seperti mongoDB dll.
Pada tutorial kali ini saya ingin menjelaskan sedikit tentang cara menghubungkan Python dengan Database Mysql
Persiapan lingkunganUntuk menggunakan Mysql di Python tentunya kita harus install mysql server, misalnya bisa menggunakan xampp/lampp atau mysql server yang bisa di download disini. Dalam tutorial ini, saya menggunakan Lampp sebagai server mysql. Saya berasumsi bahwa Anda telah menginstal mysql-server di laptop Anda masing-masing
Setelah itu, kita bisa menyiapkan driver mysql sebagai penghubung antara python dan mysql-server. Ada banyak jenis driver untuk mysql, seperti Mysql-Connector, PyMysql, atau MysqlClient. Pada tutorial kali ini saya sarankan untuk menggunakan mysqlclient, karena dua yang sebelumnya memiliki kekurangan seperti performa dan jarang update (saya tidak akan membahas ini XD)
Instal MysqlClient
Sebelum memulai, untuk pengguna linux berbasis debian, pengguna ubuntu atau macOS, harus menginstal pengembangan header python dan mysql dengan cara berikut
sudo apt-get install python3-dev libmysqlclient-dev
atau di MacOS
brew install mysql-connector-c_
setelah menginstal header pengembangan, lanjutkan dengan menginstal mysqlclient melalui pip
pip install mysqlclient
Catatan Untuk pengguna Windows, jika mengalami error, Anda dapat mencoba beberapa metode berikut
- Instal visual c++ (biasanya terjadi jika Anda belum menginstal visual c++2010 atau mengikuti persyaratan pada pesan kesalahan)
- Install menggunakan file whl yang bisa didownload
- downgrade versi mysqlclient dengan
pip install mysqlclient==1.3.9 atau pip install mysqlclient==1.3.4
Tentu saja, secara umum, python dapat menggunakan berbagai metode untuk memanggil perpustakaan, dengan metode langsung, fungsi, atau model orientasi objek
Pada bagian ini, saya akan menunjukkan 2 cara, menggunakan metode langsung dan metode OOP
Membuat Basis DataUntuk metode pertama, kami menggunakan metode koneksi langsung. Sebelumnya kita harus membuat database dulu yaaaa XD, oke mari kita ketikkan script berikut ini
CREATE TABLE `product` ( `id` int(45) NOT NULL, `name` varchar(45) NOT NULL, `price` int(11) NOT NULL, `stock` int(11) NOT NULL, PRIMARY KEY (`id`)); _
lalu isikan datanya menggunakan script berikut,
INSERT INTO `product` (`id`, `name`, `price`, `stock`) VALUES (1, 'Sabun Mandi Lux', 3500, 10), (2, 'Marlboro Black Filter', 20700, 12), (3, 'Sabun cuci Muka', 15000, 100);
Pilih Koneksi LangsungSetelah data dimasukkan ke dalam database, langkah selanjutnya adalah melakukan query dengan menggunakan python. Pada contoh ini saya menggunakan metode direct connection yang artinya bagaimana menghubungkannya secara langsung tanpa menggunakan class
oke ini contohnya
import MySQLdb as db connection = db.connect('127.0.0.1', 'root', '', 'pos') cursor = connection.cursor() query = "SELECT * from product" cursor.execute(query) result = cursor.fetchall() for items in result: print(items) _
pertama kita harus memanggil MysqlDB menggunakan sintaks impor. lalu kita sambungkan ke database dan simpan di variabel koneksi
Setelah itu kita tentukan kursor pada object connection dan simpan dengan nama yang sama, yaitu kursor dimana kursor ini akan digunakan untuk mengeksekusi query
ketika query dieksekusi oleh kursor, maka kita dapat menampilkannya dalam beberapa cara, fetchall yang mengambil semua baris dalam database, kemudian ada yang mengambil data paling atas
dan hasil dari kode diatas adalah sebagai berikut
Seperti kebanyakan koneksi dengan database, tentunya ada yang namanya CRUD atau CREATE, READ, UPDATE Delete, maka kali ini kita akan mencoba insert dan delete database
Berikut adalah contoh insert database;
import MySQLdb as db connection = db.connect('127.0.0.1', 'root', '', 'pos') cursor = connection.cursor() cursor.execute("INSERT INTO `product` VALUES (%s, %s, %s, %s)", ('', 'Chiki', '5000', '50',)) connection.commit()
pada insert database, kita menggunakan sintaks dasar mysql yaitu insert, yang diikuti string lateral dengan metode bind parameter, yaitu kita membuat parameter menggunakan list, bukan lewat string, karena ini akan mudah di SQL Injection
misalnya menghapus
import MySQLdb as db connection = db.connect('127.0.0.1', 'root', '', 'pos') cursor.execute("DELETE FROM `product` WHERE `product`.`id` = 12") connection.commit()_
PEMBARUAN Koneksi Langsungselanjutnya update data di database,
import MySQLdb as db connection = db.connect('127.0.0.1', 'root', '', 'pos') cursor.execute("UPDATE product SET name= (% s), price= (%s), stock= (%s)" "Where id= ( % s)", ("Permen", "500", "10", "1")) connection.commit()_
Sama seperti sebelumnya, kita manfaatkan parameter bind, dengan membuat konten menjadi form list sebagai salah satu upaya menghindari sql injection,
Kelas KoneksiMetode selanjutnya adalah menggunakan kelas untuk menginisialisasi koneksi ke database. Pada contoh ini saya hanya menggunakan class sebagai inisiator untuk melakukan koneksi ke database, untuk query masih menggunakan cara biasa, sebagai catatan, ada 1 tool yang lebih baik dari segi efisiensi dan keamanan kode, yaitu dengan menggunakan orm seperti sql-alchemy yang akan dibahas pada tutorial Flask Versi 2
Oke langsung saja kita implementasikan, pertama kita buat class connection, dalam hal ini saya beri nama file connection. py
brew install mysql-connector-c_0
pada kelas fungsi di atas, kita menginisialisasi parameter untuk koneksi yang diinisialisasi pada metode init, sedangkan untuk mengembalikan hasil koneksi, kita menggunakan metode getDB dalam hal ini untuk mengembalikan kursor yang akan dipanggil saat kita mengeksekusi, dan untuk mengakhiri koneksinya kita menggunakan metode delcon, sedangkan metode yang lain hanyalah metode pendukung, sebenarnya untuk lebih mudahnya kita bisa membuat metode crud khusus seperti metode memilih dan sebagainya, namun karena keterbatasan waktu, saya hanya dibuat dasarnya
Setelah itu, kami membuat file baru untuk menguji apakah koneksi kami berhasil dan melakukan kueri. dalam hal ini saya menggunakan connectionTes. py
brew install mysql-connector-c_1
dalam hal ini, saya mengimpor kelas koneksi sebagai db. Setelah itu diinisialisasi dengan variabel baru bernama mysqli. dan buat objek kursor di db dengan memanggil objek kelas mysql. getDB()
untuk querynya hampir sama dengan yang sebelumnya. perbedaannya adalah kita menghubungkannya menggunakan kelas,
PENUTUPANselebihnya tergantung bagaimana pembaca mengoptimalkan baik dari sisi program maupun dari sisi query, karena pada dasarnya tidak ada sistem yang aman. Hal inilah yang membuat banyak developer berlomba-lomba mengembangkan teknik atau tools agar lebih memberikan keamanan seperti yang saya sebutkan sebelumnya yaitu menggunakan orms seperti sql-alchemy. Akhir kata dengan tutorial singkat ini insyaallah para pembaca dapat sedikit belajar tentang teknik membuat koneksi dengan database, untuk tutorial selanjutnya yaitu mengimplementasikannya menggunakan FLASK
untuk source codenya bisa di download di github saya
Memuat
Programmer asal Indonesia, penggila Dark World khususnya kopi dan terminal, punya cita-cita menjadi pythonist