Tampilkan postingan dengan label pymysql. Tampilkan semua postingan
Tampilkan postingan dengan label pymysql. Tampilkan semua postingan

Rabu, 12 Desember 2018

Create Read Update Delete data PyMysql dan Tkinter part2

Seperti yang saya janjikan pada postingan sebelumnya saya akan melanjutkan fungsi Read, Update dan Delete database. Ini merupakan lanjutan kode yang telah dibuat selanjutnya.
Pertama kita buat Treeview untuk melihat data yang sudah tersimpan di mysql. Tambahkan kode ini sebelum baris terakhir kode sebelumnya. Kode Treeview:
tree = ttk.Treeview(win,columns=("Nim", "Nama", "Jenis Kelamin", "Tempat Lahir", "Tanggal Lahir", "Alamat", "Pekerjaan"), selectmode="extended", height=200) tree.heading('Nim', text="Nim", anchor=W) tree.heading('Nama', text="Nama", anchor=W) tree.heading('Jenis Kelamin', text="Jenis Kelamin", anchor=W) tree.heading('Tempat Lahir', text="Tempat Lahir", anchor=W) tree.heading('Tanggal Lahir', text="Tanggal Lahir", anchor=W) tree.heading('Alamat', text="Alamat", anchor=W) tree.heading('Pekerjaan', text="Pekerjaan", anchor=W) tree.column('#0', stretch=NO, minwidth=0, width=0) tree.column('#1', stretch=NO, minwidth=0, width=100) tree.column('#2', stretch=NO, minwidth=0, width=130) tree.column('#3', stretch=NO, minwidth=0, width=100) tree.column('#4', stretch=NO, minwidth=0, width=150) tree.column('#5', stretch=NO, minwidth=0, width=100) tree.column('#6', stretch=NO, minwidth=0, width=180) tree.grid(column=0,columnspan=6,row=9)
Lalu buat fungsi read dibawah fungsi database:
def read(): tree.delete(*tree.get_children()) database() cursor.execute("SELECT * FROM `Mahasiswa` ORDER BY `nama_mahasiswa` ASC") fetch = cursor.fetchall() for data in fetch: tree.insert('', 'end', values=(data[0], data[1], data[2], data[3], data[4], data[5], data[6])) cursor.close() conn.close()
Bila sudah maka tambahkan kode read() untuk mengeksekusi fungsi read, taruh sebelum baris terakhir lagi, untuk membaca data setelah applikasi terbuka.Untuk memuat ulang data setelah menambahkannya juga bisa ditambahkan fungsi ini pada baris terakhir. Selanjutnya kita buat fungsi clear() untuk membuat form kosong dari data yang sudah dieksekusi baik telah disuntung, dipilih atau ditambah. Ini merupakan kode fungsi clear:
def clear(): nim.set('') nama.set('') kelamin.set('') tempat.set('') tanggal.set('') alamat.set('') pekerjaan.set('') colNim.configure(state='enabled')
Selanjutnya Kita akan buat fungsi onSelected untuk memilih data dari Treeview ketika diklik dua kali. Ini merupakan fungsi onSelected:
def onSelected(event): global Nim; curItem = tree.focus() contents =(tree.item(curItem)) selecteditem = contents['values'] Nim = selecteditem[0] clear() nim.set(selecteditem[0]) nama.set(selecteditem[1]) kelamin.set(selecteditem[2]) tempat.set(selecteditem[3]) tanggal.set(selecteditem[4]) alamat.set(selecteditem[5]) pekerjaan.set(selecteditem[6]) colNim.configure(state="disabled")
Lalu tambahkan kode ini dibawah tree.grid untuk memberi membuat fungsi onSelected berjalan dengan baik.:
tree.bind('<Double-Button-1>', onSelected)
Untuk mebuat fungsi delete silahkan tambahkan kode ini:
def remove(): if not tree.selection(): sta.config(text="Please select an item first", foreground="red") else: result = tkMessageBox.askquestion('Formulir Mahasiswa', 'Benar ingin menghapusnya?', icon="warning") if result == 'yes': curItem = tree.focus() contents =(tree.item(curItem)) selecteditem = contents['values'] tree.delete(curItem) database() cursor.execute("DELETE FROM `Mahasiswa` WHERE `nim` = %d" % selecteditem[0]) conn.commit() cursor.close() conn.close() sta.config(text="Successfully deleted the data", foreground="black")
Dan fungsi update:
def update(): database() if nim.get() == '' or nim.get() == 0: sta.config(text="Can not entry nim", foreground="red") else: tree.delete(*tree.get_children()) cursor.execute("UPDATE `Mahasiswa` SET `nama_mahasiswa` = (%s), `jenis_kelamin` = (%s), `tempat_lahir` =(%s), `tanggal_lahir` = (%s), `alamat` = (%s), `pekerjaan` = (%s) WHERE `nim` = (%s)", (nama.get(),kelamin.get(),tempat.get(),tanggal.get(),alamat.get(),pekerjaan.get(), int(Nim))) conn.commit() read() clear() sta.config(text="Successfully updated the data", foreground="black")
Bila sudah tinggal buat tombol-tombolnya dengan command yang akan dieksekusi. .: Good Luck :.

Create Read Update Delete data PyMysql dan Tkinter

Pada kesempatan ini saya akan membuat applikasi dimana kita membuat applikasi dekstop (GUI) menggunakan Tkinter dan mengelola datanya ke dalam database mysql. Ini merupakan dokumentasi lanjutan pada tag Python. Saya merekomendasikan untuk pemula belajar dulu ke yang dasarnya dulu. Karena kode ini cukup kompleks. Bahan yang diiperlukan untuk membuat applikasi ini adalah:
  • PhpMyadmin(Server Mysql bisa Xampp/ Lampp dan sebagainya)
  • Python3
  • Tkinter
  • Pip(digunakan untuk menginstal PyMysql)
  • PyMysql
  • Geany atau Text Editor lainya
Saya tidak akan membahas tentang menginstall bahan-bahan diatas silahkan browsing saja. Saya memakai Python3 terbaru. Mari kita melanjutkan tahpan selanjutnya. Buatlah database kampus dan table mahasiswa dengan sql ini.
create database kampus; use kampus; CREATE TABLE `kampus`.`Mahasiswa` ( `nim` INT(10) NOT NULL PRIMARY KEY, `nama_mahasiswa` VARCHAR(60) NOT NULL , `jenis_kelamin` ENUM('laki-laki','perempuan') NOT NULL , `tempat_lahir` VARCHAR(100) NOT NULL , `tanggal_lahir` DATE NOT NULL , `alamat` VARCHAR(500) NOT NULL , `pekerjaan` VARCHAR(50) NOT NULL);
Bila sudah membuat database dan tabel di mysql.Mari kita buat form Mahasiswa dengan menggunakan geany. Buka text editor kalian lalu copy paste kode ini:
#import modules import tkinter as tk import pymysql as PyMysql import tkinter.messagebox as tkMessageBox from tkinter import ttk from tkinter import * win = tk.Tk() win.title('Form Mahasiswa') #variabel untuk koneksi database server_name = 'localhost' username = 'root' password = '' database_name = 'kampus' #buat fungsi-fungsi def database(): global conn, cursor, server_name, username, password, database_name conn = PyMysql.connect(server_name,username,password,database_name) cursor = conn.cursor() def entry(): database() cursor.execute("INSERT INTO Mahasiswa ( nim, nama_mahasiswa, jenis_kelamin, tempat_lahir, tanggal_lahir, alamat, pekerjaan) values ((%s),(%s),(%s),(%s),(%s),(%s),(%s))",(nim.get(),nama.get(),kelamin.get(),tempat.get(),tanggal.get(),alamat.get(),pekerjaan.get())); conn.commit() sta.configure(text = 'Status :Entry data success!') sta.configure(foreground = 'green') #buat variabel-variabel nim = tk.IntVar() nama = tk.StringVar() kelamin = tk.StringVar() tempat = tk.StringVar() tanggal = tk.StringVar() alamat = tk.StringVar() pekerjaan = tk.StringVar() nim.set('') #menginisiasi komponen-komponen labTittle = ttk.Label(win, font=(16), foreground='#0000FF', text='Formulir Mahasiswa') labNim = ttk.Label(win, text='NIM ') labNama = ttk.Label(win, text='Nama ') labJenisKel = ttk.Label(win, text='Jenis Kelamin ') labTempatLah = ttk.Label(win, text='Tempat Lahir ') labTanggaLah = ttk.Label(win, text='Tanggal Lahir ') labAlamat = ttk.Label(win, text='Alamat ') labPekerjaan = ttk.Label(win, text='Pekerjaan ') sta = ttk.Label(win, text='') #colom-colom masukan colNim = ttk.Entry(win, textvariable=nim, width=12) colNama = ttk.Entry(win, textvariable=nama, width=50) colTempat = ttk.Entry(win, textvariable=tempat, width=50) colTanggal = ttk.Entry(win, textvariable=tanggal, width=50) colAlamat = ttk.Entry(win, textvariable=alamat, width=50) #radiobutton dan combobox radLaki = ttk.Radiobutton(win,variable=kelamin, text='laki-laki', value='laki-laki') radPerempuan = ttk.Radiobutton(win,variable=kelamin, text='perempuan', value='perempuan') number_chosen= ttk.Combobox(win, width=12, textvariable=pekerjaan) number_chosen['values']=('Mahasiswa','Wirausaha','Petani','PNS','Lain-lain') #Tombol tombol bAdd = ttk.Button(win, text='Add',command=entry) #menempatkan komponen-komponen labTittle.grid(column=2,sticky=tk.W+tk.E) labNim.grid(column=0,row=1,sticky=tk.W) labNama.grid(column=0,row=2,sticky=tk.W) labJenisKel.grid(column=0,row=3,sticky=tk.W) labTempatLah.grid(column=0,row=4,sticky=tk.W) labTanggaLah.grid(column=0,row=5,sticky=tk.W) labAlamat.grid(column=0,row=6,sticky=tk.W) labPekerjaan.grid(column=0,row=7,sticky=tk.W) colNim.grid(column=1,row=1,sticky=tk.W) colNama.grid(column=1,row=2,columnspan=2,sticky=tk.W) colTempat.grid(column=1,row=4,columnspan=2,sticky=tk.W) colTanggal.grid(column=1,row=5,columnspan=2,sticky=tk.W) colAlamat.grid(column=1,row=6,columnspan=2,sticky=tk.W) radLaki.grid(column=1,row=3,sticky=tk.W+tk.E) radPerempuan.grid(column=2,row=3,sticky=tk.W+tk.E) number_chosen.grid(column=1,row=7,sticky=tk.W) sta.grid(column=1,row=8,sticky=tk.W) bAdd.grid(column=3, row=4,sticky=tk.E) win.mainloop()
Lalu save file tersebut dan namai dengan mahasiswa.py lalu eksekusi file tersebut jika berhasil maka akan tampil seperti ini. Untuk fungsi Read, Update dan Delete akan dibahas pada postingan berikutnya.
 .: Good Luck :.