Banner - Belajar Python Part 13

Belajar Python Part 13: Membangun Aplikasi CRUD Melalui CLI

Pada seri belajar Python part 12 sebelumnya, kita telah mempelajari cara membuat operasi CRUD pada Python menggunakan MySQL Connector. Dalam seri belajar Python ini, kita akan melangkah lebih jauh dengan membangun aplikasi CRUD yang lebih interaktif dan terorganisir menggunakan antarmuka berbasis teks atau Command Line Interface (CLI).

Dengan pendekatan ini, Anda dapat memilih operasi yang ingin dilakukan langsung dari terminal tanpa perlu menjalankan file yang berbeda-beda.

Apa itu CLI?

CLI (Command Line Interface) adalah antarmuka berbasis teks yang memungkinkan Anda berinteraksi dengan program melalui perintah yang diketikkan di terminal atau command prompt. Berbeda dengan antarmuka grafis (GUI), CLI tidak membutuhkan tampilan visual seperti tombol atau jendela, semua interaksi dilakukan melalui teks. Dalam konteks pengembangan aplikasi Python, CLI sering digunakan untuk:

  • Membuat tools dan skrip otomatisasi
  • Membangun aplikasi backend yang ringan
  • Mengelola data secara langsung melalui terminal
  • Prototyping aplikasi sebelum membangun tampilan GUI atau web

Persiapan Awal

Sebelum memulai, pastikan sudah mengikuti seri sebelumnya dan memiliki:

  • Python 3 sudah terinstal
  • MySQL atau MariaDB sudah berjalan
  • Library mysql-connector-python sudah terinstal
  • Database toko_online dengan tabel produk sudah tersedia

Jika belum, kamu bisa menginstal library yang dibutuhkan dengan perintah berikut:

$ pip install mysql-connector-python

Struktur tabel produk yang kita gunakan adalah sebagai berikut:

Pindah Hosting ke Rumahweb Gratis

CREATE TABLE produk (

    id INT AUTO_INCREMENT PRIMARY KEY,

    nama VARCHAR(100) NOT NULL,

    harga DECIMAL(12,2) NOT NULL,

    stok INT NOT NULL

);

Struktur Aplikasi CLI

Aplikasi yang akan kita buat memiliki alur sebagai berikut:

  1. Create : Menambahkan produk baru
  2. Read : Menampilkan semua produk
  3. Update : Memperbarui data produk
  4. Delete : Menghapus produk
  5. Keluar : Mengakhiri program

Untuk dapat berjalan dengan baik, nantinya kita akan membuat satu file utama yang menggabungkan seluruh proses CRUD, sehingga akan dapat menjalankan menu interaktif. File dapat dibuat dengan nama  app_crud.py.

Membuat Koneksi Database

Buat file baru bernama app_crud.py, kemudian tambahkan fungsi koneksi database di bagian awal:

import mysql.connector

def get_connection():

    return mysql.connector.connect(

        host="localhost",

        user="root",

        passwd="",

        database="toko_online"

    )

Fungsi get_connection() akan dipanggil setiap kali kita membutuhkan koneksi ke database, sehingga tidak perlu membuat koneksi berulang kali secara manual.

Create: Menambahkan Produk Baru

Tambahkan fungsi berikut untuk menyimpan data produk baru ke dalam database:

def tambah_produk():

    print("\n=== Tambah Produk Baru ===")

    nama  = input("Nama produk  : ")

    harga = float(input("Harga        : "))

    stok  = int(input("Stok         : "))

    db     = get_connection()

    cursor = db.cursor()

    sql    = "INSERT INTO produk (nama, harga, stok) VALUES (%s, %s, %s)"

    cursor.execute(sql, (nama, harga, stok))

    db.commit()

    print(f"? Produk '{nama}' berhasil ditambahkan dengan ID: {cursor.lastrowid}")

    db.close()

Fungsi ini akan meminta Anda memasukkan nama, harga, dan stok produk secara interaktif, kemudian menyimpannya ke database.

Read: Menampilkan Semua Produk

Tambahkan fungsi untuk menampilkan seluruh data produk dalam format tabel yang rapi:

def tampil_produk():

    print("\n=== Daftar Produk ===")

    db     = get_connection()

    cursor = db.cursor()

    cursor.execute("SELECT * FROM produk")

    hasil  = cursor.fetchall()

    if not hasil:

        print("Belum ada data produk.")

    else:

        print(f"{'ID':<5} {'Nama':<25} {'Harga':>15} {'Stok':>6}")

        print("-" * 55)

        for baris in hasil:

            print(f"{baris[0]:<5} {baris[1]:<25} {baris[2]:>15,.2f} {baris[3]:>6}")

    db.close()

Contoh output yang akan ditampilkan di terminal:

=== Daftar Produk ===

ID    Nama                            Harga   Stok

-------------------------------------------------------

1     Laptop Gaming           15,000,000.00     10

2     Mouse Wireless             250,000.00     50

3     Keyboard Mekanikal         750,000.00     30

4     Monitor 24 Inch          3,500,000.00     15

Update: Memperbarui Data Produk

Tambahkan fungsi untuk memperbarui harga dan stok produk berdasarkan ID:

def update_produk():

    print("\n=== Update Produk ===")

    tampil_produk()

    id_produk = int(input("\nMasukkan ID produk yang akan diubah: "))

    harga_baru = float(input("Harga baru : "))

    stok_baru  = int(input("Stok baru  : "))

    db     = get_connection()

    cursor = db.cursor()

    sql    = "UPDATE produk SET harga = %s, stok = %s WHERE id = %s"

    cursor.execute(sql, (harga_baru, stok_baru, id_produk))

    db.commit()

    if cursor.rowcount > 0:

        print(f"? Produk dengan ID {id_produk} berhasil diperbarui.")

    else:

        print(f"? Produk dengan ID {id_produk} tidak ditemukan.")

    db.close()

Note:
Fungsi ini memanggil tampil_produk() terlebih dahulu, sehingga Anda dapat melihat daftar produk sebelum memilih ID yang ingin diubah.

Delete: Menghapus Produk

Tambahkan fungsi untuk menghapus produk berdasarkan ID dengan konfirmasi sebelum menghapus:

def hapus_produk():

    print("\n=== Hapus Produk ===")

    tampil_produk()

    id_produk = int(input("\nMasukkan ID produk yang akan dihapus: "))

    konfirmasi = input(f"Yakin ingin menghapus produk ID {id_produk}? (y/n): ")

    if konfirmasi.lower() != 'y':

        print("Penghapusan dibatalkan.")

        return

    db     = get_connection()

    cursor = db.cursor()

    cursor.execute("DELETE FROM produk WHERE id = %s", (id_produk,))

    db.commit()

    if cursor.rowcount > 0:

        print(f"? Produk dengan ID {id_produk} berhasil dihapus.")

    else:

        print(f"? Produk dengan ID {id_produk} tidak ditemukan.")

    db.close()

Note:
Langkah konfirmasi (y/n) ditambahkan untuk mencegah penghapusan data yang tidak disengaja.

Membuat Menu Utama CLI

Setelah semua fungsi CRUD siap, tambahkan fungsi menu() sebagai pengendali utama aplikasi:

def menu():

    while True:

        print("\n" + "=" * 35)

        print("   APLIKASI MANAJEMEN PRODUK CLI")

        print("=" * 35)

        print("1. Tambah Produk")

        print("2. Tampilkan Produk")

        print("3. Update Produk")

        print("4. Hapus Produk")

        print("5. Keluar")

        print("-" * 35)

        pilihan = input("Pilih menu (1-5): ")

        if pilihan == '1':

            tambah_produk()

        elif pilihan == '2':

            tampil_produk()

        elif pilihan == '3':

            update_produk()

        elif pilihan == '4':

            hapus_produk()

        elif pilihan == '5':

            print("Terima kasih! Program selesai.")

            break

        else:

            print("? Pilihan tidak valid. Silakan coba lagi.")

if __name__ == "__main__":

    menu()

Penggunaan while True memastikan menu terus ditampilkan hingga pengguna memilih opsi keluar (angka 5).

Menjalankan Aplikasi

Jalankan aplikasi dengan perintah berikut di terminal:

$ python3 app_crud.py

Jika berhasil, tampilan awal yang muncul adalah:

===================================

   APLIKASI MANAJEMEN PRODUK CLI

===================================

1. Tambah Produk

2. Tampilkan Produk

3. Update Produk

4. Hapus Produk

5. Keluar

-----------------------------------

Pilih menu (1-5):

Ketik angka sesuai operasi yang ingin dilakukan, lalu tekan Enter.

Source Code

Sebagai rangkuman dari materi belajar Python part 13, berikut adalah keseluruhan kode aplikasi CRUD berbasis CLI yang sudah kita bangun. Lihat source code.

Penutup

Dalam seri belajar Python part 13 ini, kita telah berhasil membangun aplikasi CRUD yang lebih terstruktur dan interaktif menggunakan antarmuka berbasis CLI. Kemampuan membangun aplikasi CLI seperti ini merupakan langkah penting dalam pengembangan aplikasi Python, khususnya untuk membuat tools dan skrip yang efisien.

Dengan dasar yang sudah kita bangun, kamu bisa mengembangkan aplikasi ini lebih lanjut, misalnya dengan menambahkan fitur pencarian, pagination, atau bahkan mengintegrasikannya ke dalam REST API.

Pada belajar Python part 14, kita akan melanjutkan pembahasan dengan membangun aplikasi web yang berjalan di localhost. Semoga bermanfaat!

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 0 / 5. Vote count: 0

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

Amiratur Rafifah

Amiratur Rafifah, atau yang akrab dipanggil Fifah, adalah seorang staf technical support di Rumahweb Indonesia dengan passion besar di dunia pendidikan, teknologi, dan kreativitas. Melalui Journal Rumahweb, Fifah ingin berbagi insight dan solusi teknis, dengan fokus pada penggunaan dan pengembangan Python di lingkungan hosting.