{"id":64551,"date":"2026-06-10T08:21:00","date_gmt":"2026-06-10T01:21:00","guid":{"rendered":"https:\/\/www.rumahweb.com\/journal\/?p=64551"},"modified":"2026-06-03T16:21:48","modified_gmt":"2026-06-03T09:21:48","slug":"belajar-python-part-13","status":"publish","type":"post","link":"https:\/\/www.rumahweb.com\/journal\/belajar-python-part-13\/","title":{"rendered":"Belajar Python Part 13: Membangun Aplikasi CRUD Melalui CLI"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Pada seri belajar Python <strong><a href=\"https:\/\/www.rumahweb.com\/journal\/belajar-python-part-12\/\" target=\"_blank\" rel=\"noopener\" title=\"\">part 12<\/a><\/strong> 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 <em>Command Line Interface (CLI)<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dengan pendekatan ini, Anda dapat memilih operasi yang ingin dilakukan langsung dari terminal tanpa perlu menjalankan file yang berbeda-beda.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Apa itu CLI?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">CLI <em>(Command Line Interface)<\/em> adalah antarmuka berbasis teks yang memungkinkan Anda berinteraksi dengan program melalui perintah yang diketikkan di terminal atau <em>command prompt<\/em>. 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:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Membuat<em> tools <\/em>dan skrip otomatisasi<\/li>\n\n\n\n<li>Membangun aplikasi backend yang ringan<\/li>\n\n\n\n<li>Mengelola data secara langsung melalui terminal<\/li>\n\n\n\n<li><em>Prototyping<\/em> aplikasi sebelum membangun tampilan GUI atau web<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Persiapan Awal<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sebelum memulai, pastikan sudah mengikuti seri sebelumnya dan memiliki:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Python 3 sudah terinstal<\/li>\n\n\n\n<li>MySQL atau MariaDB sudah berjalan<\/li>\n\n\n\n<li>Library mysql-connector-python sudah terinstal<\/li>\n\n\n\n<li>Database toko_online dengan tabel produk sudah tersedia<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Jika belum, kamu bisa menginstal<em> library<\/em> yang dibutuhkan dengan perintah berikut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ pip install mysql-connector-python<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Struktur tabel produk yang kita gunakan adalah sebagai berikut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE produk (\n\n&nbsp;&nbsp;&nbsp;&nbsp;id INT AUTO_INCREMENT PRIMARY KEY,\n\n&nbsp;&nbsp;&nbsp;&nbsp;nama VARCHAR(100) NOT NULL,\n\n&nbsp;&nbsp;&nbsp;&nbsp;harga DECIMAL(12,2) NOT NULL,\n\n&nbsp;&nbsp;&nbsp;&nbsp;stok INT NOT NULL\n\n);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Struktur Aplikasi CLI<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Aplikasi yang akan kita buat memiliki alur sebagai berikut:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><em>Create<\/em> : Menambahkan produk baru<\/li>\n\n\n\n<li><em>Read <\/em>: Menampilkan semua produk<\/li>\n\n\n\n<li><em>Update<\/em> : Memperbarui data produk<\/li>\n\n\n\n<li><em>Delete<\/em> : Menghapus produk<\/li>\n\n\n\n<li><em>Keluar <\/em>: Mengakhiri program<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">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&nbsp; app_crud.py.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Membuat Koneksi Database<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Buat file baru bernama app_crud.py, kemudian tambahkan fungsi koneksi database di bagian awal:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import mysql.connector\n\ndef get_connection():\n\n&nbsp;&nbsp;&nbsp;&nbsp;return mysql.connector.connect(\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host=\"localhost\",\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user=\"root\",\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;passwd=\"\",\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;database=\"toko_online\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Fungsi get_connection() akan dipanggil setiap kali kita membutuhkan koneksi ke database, sehingga tidak perlu membuat koneksi berulang kali secara manual.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Create: Menambahkan Produk Baru<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tambahkan fungsi berikut untuk menyimpan data produk baru ke dalam database:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def tambah_produk():\n\n&nbsp;&nbsp;&nbsp;&nbsp;print(\"\\n=== Tambah Produk Baru ===\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;nama&nbsp; = input(\"Nama produk&nbsp; : \")\n\n&nbsp;&nbsp;&nbsp;&nbsp;harga = float(input(\"Harga&nbsp; &nbsp; &nbsp; &nbsp; : \"))\n\n&nbsp;&nbsp;&nbsp;&nbsp;stok&nbsp; = int(input(\"Stok &nbsp; &nbsp; &nbsp; &nbsp; : \"))\n\n&nbsp;&nbsp;&nbsp;&nbsp;db &nbsp; &nbsp; = get_connection()\n\n&nbsp;&nbsp;&nbsp;&nbsp;cursor = db.cursor()\n\n&nbsp;&nbsp;&nbsp;&nbsp;sql&nbsp; &nbsp; = \"INSERT INTO produk (nama, harga, stok) VALUES (%s, %s, %s)\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(sql, (nama, harga, stok))\n\n&nbsp;&nbsp;&nbsp;&nbsp;db.commit()\n\n&nbsp;&nbsp;&nbsp;&nbsp;print(f\"? Produk '{nama}' berhasil ditambahkan dengan ID: {cursor.lastrowid}\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;db.close()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Fungsi ini akan meminta Anda memasukkan nama, harga, dan stok produk secara interaktif, kemudian menyimpannya ke database.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Read: Menampilkan Semua Produk<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tambahkan fungsi untuk menampilkan seluruh data produk dalam format tabel yang rapi:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def tampil_produk():\n\n&nbsp;&nbsp;&nbsp;&nbsp;print(\"\\n=== Daftar Produk ===\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;db &nbsp; &nbsp; = get_connection()\n\n&nbsp;&nbsp;&nbsp;&nbsp;cursor = db.cursor()\n\n&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(\"SELECT * FROM produk\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;hasil&nbsp; = cursor.fetchall()\n\n&nbsp;&nbsp;&nbsp;&nbsp;if not hasil:\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\"Belum ada data produk.\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;else:\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f\"{'ID':&lt;5} {'Nama':&lt;25} {'Harga':&gt;15} {'Stok':&gt;6}\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\"-\" * 55)\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for baris in hasil:\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f\"{baris&#91;0]:&lt;5} {baris&#91;1]:&lt;25} {baris&#91;2]:&gt;15,.2f} {baris&#91;3]:&gt;6}\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;db.close()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Contoh output yang akan ditampilkan di terminal:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>=== Daftar Produk ===\n\nID&nbsp; &nbsp; Nama&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Harga &nbsp; Stok\n\n-------------------------------------------------------\n\n1 &nbsp; &nbsp; Laptop Gaming &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 15,000,000.00 &nbsp; &nbsp; 10\n\n2 &nbsp; &nbsp; Mouse Wireless &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 250,000.00 &nbsp; &nbsp; 50\n\n3 &nbsp; &nbsp; Keyboard Mekanikal &nbsp; &nbsp; &nbsp; &nbsp; 750,000.00 &nbsp; &nbsp; 30\n\n4 &nbsp; &nbsp; Monitor 24 Inch&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3,500,000.00 &nbsp; &nbsp; 15<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Update: Memperbarui Data Produk<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tambahkan fungsi untuk memperbarui harga dan stok produk berdasarkan ID:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def update_produk():\n\n&nbsp;&nbsp;&nbsp;&nbsp;print(\"\\n=== Update Produk ===\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;tampil_produk()\n\n&nbsp;&nbsp;&nbsp;&nbsp;id_produk = int(input(\"\\nMasukkan ID produk yang akan diubah: \"))\n\n&nbsp;&nbsp;&nbsp;&nbsp;harga_baru = float(input(\"Harga baru : \"))\n\n&nbsp;&nbsp;&nbsp;&nbsp;stok_baru&nbsp; = int(input(\"Stok baru&nbsp; : \"))\n\n&nbsp;&nbsp;&nbsp;&nbsp;db &nbsp; &nbsp; = get_connection()\n\n&nbsp;&nbsp;&nbsp;&nbsp;cursor = db.cursor()\n\n&nbsp;&nbsp;&nbsp;&nbsp;sql&nbsp; &nbsp; = \"UPDATE produk SET harga = %s, stok = %s WHERE id = %s\"\n\n&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(sql, (harga_baru, stok_baru, id_produk))\n\n&nbsp;&nbsp;&nbsp;&nbsp;db.commit()\n\n&nbsp;&nbsp;&nbsp;&nbsp;if cursor.rowcount &gt; 0:\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f\"? Produk dengan ID {id_produk} berhasil diperbarui.\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;else:\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f\"? Produk dengan ID {id_produk} tidak ditemukan.\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;db.close()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Note:<\/strong><br \/>Fungsi ini memanggil tampil_produk() terlebih dahulu, sehingga Anda dapat melihat daftar produk sebelum memilih ID yang ingin diubah.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Delete: Menghapus Produk<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tambahkan fungsi untuk menghapus produk berdasarkan ID dengan konfirmasi sebelum menghapus:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def hapus_produk():\n\n&nbsp;&nbsp;&nbsp;&nbsp;print(\"\\n=== Hapus Produk ===\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;tampil_produk()\n\n&nbsp;&nbsp;&nbsp;&nbsp;id_produk = int(input(\"\\nMasukkan ID produk yang akan dihapus: \"))\n\n&nbsp;&nbsp;&nbsp;&nbsp;konfirmasi = input(f\"Yakin ingin menghapus produk ID {id_produk}? (y\/n): \")\n\n&nbsp;&nbsp;&nbsp;&nbsp;if konfirmasi.lower() != 'y':\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\"Penghapusan dibatalkan.\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return\n\n&nbsp;&nbsp;&nbsp;&nbsp;db &nbsp; &nbsp; = get_connection()\n\n&nbsp;&nbsp;&nbsp;&nbsp;cursor = db.cursor()\n\n&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(\"DELETE FROM produk WHERE id = %s\", (id_produk,))\n\n&nbsp;&nbsp;&nbsp;&nbsp;db.commit()\n\n&nbsp;&nbsp;&nbsp;&nbsp;if cursor.rowcount &gt; 0:\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f\"? Produk dengan ID {id_produk} berhasil dihapus.\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;else:\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(f\"? Produk dengan ID {id_produk} tidak ditemukan.\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;db.close()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Note:<\/strong><br \/>Langkah konfirmasi (y\/n) ditambahkan untuk mencegah penghapusan data yang tidak disengaja.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Membuat Menu Utama CLI<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Setelah semua fungsi CRUD siap, tambahkan fungsi menu() sebagai pengendali utama aplikasi:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def menu():\n\n&nbsp;&nbsp;&nbsp;&nbsp;while True:\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\"\\n\" + \"=\" * 35)\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\" &nbsp; APLIKASI MANAJEMEN PRODUK CLI\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\"=\" * 35)\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\"1. Tambah Produk\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\"2. Tampilkan Produk\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\"3. Update Produk\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\"4. Hapus Produk\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\"5. Keluar\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\"-\" * 35)\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pilihan = input(\"Pilih menu (1-5): \")\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if pilihan == '1':\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tambah_produk()\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif pilihan == '2':\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tampil_produk()\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif pilihan == '3':\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;update_produk()\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif pilihan == '4':\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hapus_produk()\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif pilihan == '5':\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\"Terima kasih! Program selesai.\")\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(\"? Pilihan tidak valid. Silakan coba lagi.\")\n\nif __name__ == \"__main__\":\n\n&nbsp;&nbsp;&nbsp;&nbsp;menu()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Penggunaan while True memastikan menu terus ditampilkan hingga pengguna memilih opsi keluar (angka 5).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Menjalankan Aplikasi<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Jalankan aplikasi dengan perintah berikut di terminal:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ python3 app_crud.py<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jika berhasil, tampilan awal yang muncul adalah:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>===================================\n\n&nbsp;&nbsp;&nbsp;APLIKASI MANAJEMEN PRODUK CLI\n\n===================================\n\n1. Tambah Produk\n\n2. Tampilkan Produk\n\n3. Update Produk\n\n4. Hapus Produk\n\n5. Keluar\n\n-----------------------------------\n\nPilih menu (1-5):<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ketik angka sesuai operasi yang ingin dilakukan, lalu tekan Enter.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><em>Source Code<\/em><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sebagai rangkuman dari materi belajar Python part 13, berikut adalah keseluruhan kode aplikasi CRUD berbasis CLI yang sudah kita bangun. Lihat <a href=\"https:\/\/github.com\/frayacode\/CRUD-Py\/tree\/main\" target=\"_blank\" rel=\"noopener\" title=\"\"><em>source code<\/em><\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Penutup<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">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.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dengan dasar yang sudah kita bangun, kamu bisa mengembangkan aplikasi ini lebih lanjut, misalnya dengan menambahkan fitur pencarian, <em>pagination<\/em>, atau bahkan mengintegrasikannya ke dalam REST API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pada belajar Python part 14, kita akan melanjutkan pembahasan dengan membangun aplikasi web yang berjalan di localhost. Semoga bermanfaat!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 [&hellip;]<\/p>\n","protected":false},"author":354,"featured_media":64978,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[2483,1176,2485],"class_list":["post-64551","post","type-post","status-publish","format-standard","has-post-thumbnail","category-web-programming","tag-belajar-python","tag-python","tag-python-dasar"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts\/64551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/users\/354"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/comments?post=64551"}],"version-history":[{"count":9,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts\/64551\/revisions"}],"predecessor-version":[{"id":64984,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts\/64551\/revisions\/64984"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/media\/64978"}],"wp:attachment":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/media?parent=64551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/categories?post=64551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/tags?post=64551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}