#Pyhton 2. Belajar CRUD & Koneksi Database dengan PyMySQL
Pada pembuatan aplikasi yang terpenting adalah tempat penyimpanan data yang ada dalam aplikasi tersebut atau yang sering kita sebut dengan Database. Pada artikel ini saya akan berbagi pengalaman saya dalam membuat koneksi ke database dan CRUD di pyhton desktop menggunakan PyQt5. Sebelum masuk, buatlah database dengan nama dbyhton dan buat tabel data dengan struktur seperti berikut
- Install PyMySQL
Di artikel yang saya buat ini, saya menggunakan PyMySQL sebagai package yang akan menghubungkan pyhton ke databasenya. Untuk databasenya sendiri, saya menggunakan XAMPP. Langkah pertama yang dilakukan adalah menginstall package PyMySQL nya terlebih dahulu dengan menuliskan script berikut di CMD teman-teman :
pip install pymysql
tunggu sampai installasi selesai. Setelah kita akan cek apakah package PyMySQL sudah terinstall dengan benar di perangkat kita atau belum. Cara nya dengan menuliskan :
import pymysql
pada pyhton-crompt teman-teman. Jika hasilnya seperti di bawah maka installasi berhasil.
- Membuat Desain GUI
Kemedian langkah selanjutnya yaitu membuat desain tampilan GUI menggunakan Qt Designer. Buat lah desain seperti gambar berikut.
Setelah membuat desain seperti gambar di atas, Jangan lupa nama objek dari LineEdit dan Button dirubah dan disesuikan. Lalu simpan desain tersebut di folder yang teman-teman inginkan.
Kemudian convert desain tersebut ke dalam bentuk python file(.py). Untuk melakukan convert desain ui ke dalam py bisa dilihat di artikel saya yang sebelumnya atau klik disini. Proses convert ini dilakukan agar kita bisa mendapatkan file pyhton dari ui tersebut yang nantinya kita bisa otak-atik.
Apabila proses covert sudah selesai lalu buka file tersebut(yang berektensi .py) menggunakan Pyhton-IDLE atau Python text editor seperti PyCharm.
- Membuat Koneksi ke Database
Untuk melakukan koneksi ke database, kita harus menginport terlebih dahulu package PyMySQL di baris setelah from PyQt5 import QtCore, QtGui, QtWidget. Seperti gambar di bawah
Kemudian kita membuat fungsi koneksi. Berikut syntak fungsi koneksi tersebut.
Fungsi Koneksi
def koneksi(self):
con = pymysql.connect(db='dbpython', user='root', passwd='', host='localhost', port=3306, autocommit=True)
cur = con.cursor()
if(cur):
self.messagebox("Koneksi", "Koneksi Berhasil")
else:
self.messagebox("Koneksi", "Koneksi Gagal")
fungsi di atas akan menghubungkan koneksi ke database yang telah kita buat selumnya. Selain itu juga, di dalam fungsi tersebut terdapat fungsi untuk memunculkan messagebox. Jadi ketika program di run maka akan muncul messagebox yang isi nya koneksi berhasil atau koneksi gagal.
Fungsi Messagebox
def messagebox(self, title, message):
mess = QtWidgets.QMessageBox()
mess.setWindowTitle(title)
mess.setText(message)
mess.setStandardButtons(QtWidgets.QMessageBox.Ok)
mess.exec_()
kemudian fungsi koneksi tersebut kita akan taruh di fungsi setupUi. Fungsi setupUi ini adalah fungsi utamanya, jadi ketika program di run maka fungsi koneksi akan otomatis di panggil. Letakkan fungsi koneksi dengan menuliskan script berikut
self.koneksi()
kemudian run program dan cek apakah koneksi berhasil atau gagal.
- Menyimpan data ke Database
Untuk menyimpan data yang ada di aplikasi GUI nya. Terlebih dahulu kita akan membuat fungsi save. Fungsi ini akan memanggil data-data yang ada di tiap LineEdit. Kemudian melakukan query INSERT SQL ke dalam tabel yang ada di database. Fungsi ini di buat di bawah fungsi messagebox.
Fungsi save
def save(self):
firstname = self.FirstName.text()
lastname = self.LastName.text()
address = self.Address.toPlainText()
phone = self.Phone.text()
insert = (firstname, lastname, address, phone)
print(insert)
con = pymysql.connect(db='dbpython', user='root', passwd='', host='localhost', port=3306, autocommit=True)
cur = con.cursor()
sql = "INSERT INTO data(first_name, last_name, address, phone)" + \
"VALUES"+str(insert)
data = cur.execute(sql)
if(data):
self.messagebox("SUKSES", "Data Barang Tersimpan")
else:
self.messagebox("GAGAL", "Data Barang Gagal Tersimpan")
Untuk isian address saya menggunakan widgets QTextEdit.
Kemudian panggil fungsi save tersebut ketika kita meng-click button save. Berikut cara pemanggilan fungsinya :
self.Save.clicked.connect(self.save)
letakkan script di atas di bawah baris self.Save.setObjectName(“Save”) seperti gambar di bawah
run program, isi data kemudian click button save lihat apakah proses menyimpan data berhasil atau tidak.
- Menampilkan Data dari Database
Sama seperti menyimpan data, untuk menampilkan data juga kita terlebih dahulu membuat fungsi Tampil untuk menampilkan data di database. Dan memanggil fungsi tersebut ketika meng-click button check. Data yang ditampikan berdasarkan nama depan/first name nya.
Fungsi Tampil
def Tampil(self):
firstname = self.FirstName.text()
db = pymysql.connect(db='dbpython', user='root', passwd='', host='localhost', port=3306, autocommit=True)
cursor = db.cursor()
cursor.execute("SELECT * FROM data WHERE first_name='"+str(firstname)+"'")
data = cursor.fetchall()
if (data):
for tp in data:
self.LastName.setText("" + tp[1])
self.Address.setText("" + tp[2])
self.Phone.setText("" + tp[3])
self.messagebox("INFO","Data Ada")
else:
self.messagebox("INFO", "Data belum ada")
panggil fungsi tersebut pada button check seperti gambar di bawah.
- Mengupdate Data di Database
untuk menghapus data juga kita terlebih dahulu membuat fungsi Hapus untuk menampilkan data di database. Dan memanggil fungsi tersebut ketika meng-click button update. Data yang diupdate berdasarkan nama depan/first name nya.
Fungsi Update
def update(self):
firstname = self.FirstName.text()
lastname = self.LastName.text()
address = self.Address.toPlainText()
phone = self.Phone.text()
con = pymysql.connect(db='dbpython', user='root', passwd='', host='localhost', port=3306, autocommit=True)
cur = con.cursor()
sql = "UPDATE data SET last_name=%s, address=%s, phone=%s WHERE first_name=%s"
data = cur.execute(sql, (lastname, address, phone, firstname))
if (data):
self.messagebox("SUKSES", "Data Berhasil Di Update")
else:
self.messagebox("GAGAL", "Data Gagal Di Update")
dan panggil fungsi update di atas pada button update seperti gambar di bawah kemudian coba program. Apakah data berhasil di update atau tidak.
- Menghapus Data
Sama seperti menyimpan data, untuk menghapus data juga kita terlebih dahulu membuat fungsi delete untuk menghapus data di database dengan query SQL DELETE. Dan memanggil fungsi tersebut ketika meng-click button delete. Data yang diahapus berdasarkan nama depan/first name nya.
Fungsi Hapus
def delete(self):
firstname = self.FirstName.text()
con = pymysql.connect(db='dbpython', user='root', passwd='', host='localhost', port=3306, autocommit=True)
cur = con.cursor()
sql = "DELETE FROM data where first_name=%s"
data = cur.execute(sql, (firstname))
if (data):
self.messagebox("SUKSES", "Data Berhasil Di HAPUS")
else:
self.messagebox("GAGAL", "Data GAGAL Di HAPUS")
panggil fungsi delete di atas pada button DELETE seperti gambar di bawah kemudian coba program. Apakah data berhasil di hapus atau tidak.
- Menghapus Isian
Pada desain di atas terdapat button CLEAR. Button ini berfungsi untuk menghapus isian yang ada di dalam LineEdit. Script untuk menghapus isian tersebut kita letakkan pada fungsi clear. Berikut script fungsi clear tersebut
Fungsi clear
def clear(self):
self.FirstName.clear()
self.LastName.clear()
self.Address.clear()
self.Phone.clear()
panggil fungsi clear di atas pada button CLEAR seperti pada button yang lain kemudian coba program. Apakah data isian berhasil di hapus atau tidak.
Terakhir coba program dan fungsi-fungsi button nya, apabila program yang temen-temen buat berjalan dengan lancar berarti teman-teman berhasil membuat CRUD dan Koneksi Database pada Aplikasi Desktop Python.
Next, kita akan belajar cara menampilkan data dari database ke dalam tabel dan lain-lain. Apabila ada saran atau komentar bisa komen saja di bawah. Terima kasih !!