stdsquare²
🎓 Kelas
stdsquare / materi / slides / pertemuan-11
Tema
Japan
Arcade
Dark Retro
Font
‹ Daftar slide Pertemuan 11: Integrasi antarmuka GUI dengan komponen Python dan operasi CRUD

Integrasi Antarmuka GUI dengan Komponen Python dan Operasi CRUD

Pertemuan 11 — Lab Pemrograman · Bisnis Digital FEB UNDIP

RPS minggu 12 · 2x50 menit CRUD Python Backend GUI Integration

Agenda Pertemuan

Sesi 1 — Konsep & Arsitektur (50 menit)
  • Recap singkat: database (P9) & dummy API (P10)
  • Konsep CRUD dan pemetaannya ke method HTTP
  • Arsitektur integrasi GUI ↔ Python ↔ Database
  • Mengapa Python cocok sebagai jembatan backend
Sesi 2 — Praktik CRUD (50 menit)
  • Menulis fungsi Create, Read, Update, Delete
  • Menghubungkan GUI ke endpoint CRUD
  • Validasi input & penanganan error
  • Latihan terpandu: studi kasus pendataan UMKM

Tujuan Pembelajaran

Tujuan 1
01
Menjelaskan konsep CRUD dan memetakan tiap operasi ke method HTTP yang sesuai (POST, GET, PUT/PATCH, DELETE).
Tujuan 2
02
Menulis komponen Python yang menjalankan operasi Create, Read, Update, dan Delete terhadap data.
Tujuan 3
03
Menghubungkan antarmuka GUI dengan komponen Python tersebut, lengkap dengan validasi dan penanganan error.
Sub-CPMK Minggu 12: mahasiswa mampu mengintegrasikan antarmuka GUI dengan komponen Python untuk menjalankan operasi CRUD secara utuh dan teruji.
Bagian 1 dari 3
Konsep CRUD & Arsitektur Integrasi

Dari database (P9) dan dummy API (P10) menuju komponen Python nyata yang menjalankan operasi data.

CRUD Arsitektur Python

Recap Kilat: Bekal dari Pertemuan Sebelumnya

Dua pertemuan terakhir membangun fondasi yang kita pakai hari ini secara langsung.

Pertemuan 9 — Database
Anda merancang tabel (misalnya mahasiswa, produk, umkm) dengan kolom dan tipe data yang jelas — inilah tempat data CRUD hari ini benar-benar tersimpan.
Pertemuan 10 — Dummy API
Anda mensimulasikan pertukaran data dengan endpoint palsu — hari ini endpoint itu kita ganti dengan komponen Python asli yang membaca & menulis ke database sungguhan.
Intinya: GUI tidak pernah menyentuh database secara langsung — selalu lewat komponen Python yang menjadi perantara resmi.

Apa Itu CRUD? Empat Operasi Dasar Data

OperasiMethod HTTPContoh Aksi di Aplikasi
Create — tambah data baruPOSTMendaftarkan UMKM baru ke sistem
Read — baca / tampilkan dataGETMenampilkan daftar produk di layar
Update — ubah data yang adaPUT / PATCHMengoreksi alamat toko yang salah ketik
Delete — hapus dataDELETEMenghapus akun pengguna yang tidak aktif

CRUD adalah singkatan yang mewakili hampir semua kebutuhan pengelolaan data dalam aplikasi bisnis digital — dari e-commerce sampai sistem akademik.

Arsitektur Integrasi: GUI ↔ Python ↔ Database

Antarmuka GUIReact Native / TkinterKomponen Pythoncreate() read()update() delete()(validasi & error handling)Databasetabel P9requestresponsqueryhasil
GUI hanya "meminta" — semua logika & keamanan CRUD hidup di komponen Python, bukan di layar aplikasi.

Mengapa Python Cocok Menjadi Jembatan?

Kemudahan Sintaks
  • Kode singkat & mudah dibaca, cocok untuk pemula
  • Framework ringan: Flask untuk membuat endpoint CRUD dalam hitungan baris
  • Library GUI desktop bawaan: Tkinter
Ekosistem Data
  • Library database matang: sqlite3, SQLAlchemy
  • Mudah tersambung ke REST API (Pertemuan 8) yang dikonsumsi React Native
  • Dipakai luas industri Indonesia: fintech, marketplace, layanan pemerintah

Hari ini kita pakai Flask sebagai kerangka Python untuk menulis fungsi CRUD yang bisa dipanggil dari GUI mana pun.

Bagian 2 dari 3
Membangun Operasi CRUD Langkah demi Langkah

Create • Read • Update • Delete — kode Python nyata yang dijalankan dari GUI.

Create Read Update Delete

CREATE — Menambah Data Baru

@app.route("/umkm", methods=["POST"])
def create_umkm():
  data = request.get_json()
  # simpan ke tabel umkm di database
  db.execute("INSERT INTO umkm (nama, alamat) VALUES (?, ?)",
       (data["nama"], data["alamat"]))
  return {"status": "tersimpan"}, 201
  1. 1GUI mengirim data form (nama & alamat UMKM) via POST
  2. 2Python menerima data lewat request.get_json()
  3. 3Python menjalankan perintah INSERT INTO ke database
  4. 4Python mengembalikan status 201 (berhasil dibuat) ke GUI

READ — Membaca & Menampilkan Data

@app.route("/umkm", methods=["GET"])
def read_umkm():
  page = request.args.get("page", 1, type=int)
  limit = 20
  offset = (page - 1) * limit
  rows = db.execute("SELECT * FROM umkm LIMIT ? OFFSET ?",
       (limit, offset))
  return jsonify(rows)

Mengapa perlu OFFSET? Karena menampilkan ribuan data UMKM sekaligus akan membuat GUI lambat — data dipecah per halaman (paginasi).

LangkahPerhitunganNilai
Halaman yang diminta GUIpage = 33
Jumlah data per halamanlimit = 2020
Hitung offset(page − 1) x limit = (3−1) x 2040
Query yang dijalankan PythonLIMIT 20 OFFSET 40baris ke-41–60

UPDATE — Mengubah Data yang Sudah Ada

@app.route("/umkm/<id>", methods=["PUT"])
def update_umkm(id):
  data = request.get_json()
  db.execute("UPDATE umkm SET alamat = ? WHERE id = ?",
       (data["alamat"], id))
  return {"status": "terbarui"}, 200
  1. 1GUI mengirim id UMKM yang mau diubah + data baru, via PUT
  2. 2Python mencocokkan WHERE id = ? agar hanya baris itu yang berubah
  3. 3Python menjalankan UPDATE ... SET ke database
  4. 4Python mengembalikan status 200 (berhasil) ke GUI, layar menampilkan data terbaru
Tanpa klausa WHERE id = ? yang tepat, SEMUA baris ikut berubah — kesalahan paling sering terjadi pada Update.

DELETE — Menghapus Data

@app.route("/umkm/<id>", methods=["DELETE"])
def delete_umkm(id):
  db.execute("DELETE FROM umkm WHERE id = ?", (id,))
  return {"status": "terhapus"}, 200

Mari lacak jumlah data UMKM aktif melalui satu siklus CRUD berurutan hari ini:

LangkahPerhitunganNilai
Data awal (hasil READ pagi ini)50 UMKM terdaftar50
CREATE: 8 UMKM baru mendaftar50 + 858
UPDATE: 3 UMKM koreksi alamat58 (jumlah tetap)58
DELETE: 6 UMKM tidak aktif dihapus58 − 652

Coba Sendiri: Simulasikan DELETE dan ON DELETE CASCADE

Hapus satu baris induk lalu amati apakah baris anak terkait ikut terhapus (CASCADE) atau justru ditolak database.

Menghubungkan GUI ke Endpoint CRUD

React Native (mobile)
fetch("http://server/umkm", {
  method: "POST",
  body: JSON.stringify(formData)
})
Tkinter (desktop)
def on_simpan_klik():
  requests.post("http://server/umkm",
       json=form_data)

Baik fetch() di React Native maupun requests.post() di Tkinter, keduanya memanggil endpoint Flask yang sama — satu backend Python melayani dua jenis GUI sekaligus.

Validasi Input & Penanganan Error

@app.route("/umkm", methods=["POST"])
def create_umkm():
  data = request.get_json()
  if not data.get("nama"):
    return {"error": "nama wajib diisi"}, 400
  try:
    db.execute("INSERT INTO umkm ...", ...)
  except Exception as e:
    return {"error": str(e)}, 500
200 / 201
Berhasil
400
Input tidak valid (kesalahan GUI/pengguna)
500
Error di server Python (bukan salah pengguna)
Bagian 3 dari 3
Praktik & Studi Kasus

Menyatukan Create, Read, Update, Delete dalam satu alur aplikasi pendataan UMKM.

Studi Kasus Debugging Latihan

Studi Kasus: Aplikasi Pendataan UMKM End-to-End

  1. 1Admin membuka aplikasi → GUI memanggil GET /umkm → layar menampilkan daftar UMKM (Read)
  2. 2Admin menekan "Tambah UMKM" → isi form → GUI memanggil POST /umkm (Create)
  3. 3Admin menyadari alamat salah ketik → edit → GUI memanggil PUT /umkm/17 (Update)
  4. 4UMKM tersebut tutup permanen → admin menekan "Hapus" → GUI memanggil DELETE /umkm/17 (Delete)
  5. 5Layar otomatis memanggil ulang GET /umkm → daftar ter-update tanpa admin refresh manual

Kesalahan Umum Integrasi GUI ↔ Python

GejalaPenyebab Umum
Semua data ikut berubah/terhapusLupa klausa WHERE id = ? pada Update/Delete
GUI menampilkan layar kosongFormat JSON respons Python tidak cocok dengan yang diharapkan GUI
Error 500 tanpa pesan jelasTidak ada blok try except untuk menangkap error database
Data lama masih tampil setelah CreateGUI tidak memanggil ulang Read setelah operasi berhasil
Kebiasaan baik: uji setiap endpoint CRUD satu per satu (via Postman/browser) sebelum menghubungkannya ke GUI.

Latihan Praktik Terpandu

Tugas hari ini: lengkapi keempat fungsi CRUD (create, read, update, delete) pada proyek database Pertemuan 9 milik kelompok Anda, lalu hubungkan ke GUI aplikasi yang sedang dibangun.
Langkah Kerja
  • Buka proyek Flask & database dari Pertemuan 9
  • Tulis 4 endpoint CRUD sesuai pola hari ini
  • Uji tiap endpoint lewat browser/Postman
  • Hubungkan ke tombol/form di GUI aplikasi kelompok
Kriteria Selesai
  • Create menyimpan data baru ke database
  • Read menampilkan data (dengan paginasi)
  • Update & Delete hanya menyentuh baris yang dimaksud
  • Ada validasi input & penanganan error minimal

Waktu praktik: sisa sesi 2. Dampingan dosen & asisten tersedia — bertanya kapan pun menemui kebuntuan.

Ringkasan & Jembatan ke Pertemuan 12

Yang Sudah Anda Kuasai
  • Konsep CRUD & pemetaannya ke method HTTP
  • Arsitektur GUI ↔ Python ↔ Database
  • Menulis keempat fungsi CRUD di Flask
  • Menghubungkan GUI (React Native & Tkinter) ke endpoint CRUD
  • Validasi input & penanganan error dasar
Pertemuan 12 Mendatang
  • Integrasi komponen front-end & back-end dalam satu sistem aplikasi utuh
  • Menyatukan seluruh potongan (UI, state, navigasi, API, database, CRUD) dari P1–P11
  • Persiapan menuju evaluasi & debugging proyek akhir (P13–P14)