🧠 Panduan Lengkap: Membuat Aplikasi Komunikasi dengan Database Menggunakan Python 3
1. Tujuan
Membangun aplikasi Python yang dapat:
- Terhubung ke database (MySQL atau SQLite)
- Melakukan CRUD (Create, Read, Update, Delete)
- Dapat dikembangkan ke versi GUI (Tkinter) dan Web (Flask)
2. Persiapan Awal
- Install Python versi 3:
python --version
- Install library:
pip install mysql-connector-python
- Buat struktur folder:
python_db_app/ ├── config.py ├── database.py ├── app.py └── requirements.txt
3. File config.py
DB_CONFIG = {
'db_path': 'mydatabase.db'
}
4. File database.py (versi SQLite)
import sqlite3
from config import DB_CONFIG
def connect_db():
return sqlite3.connect(DB_CONFIG['db_path'])
def create_table():
conn = connect_db()
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
email TEXT
)
""")
conn.commit()
conn.close()
def insert_user(name, email):
conn = connect_db()
cursor = conn.cursor()
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", (name, email))
conn.commit()
conn.close()
def fetch_users():
conn = connect_db()
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
result = cursor.fetchall()
conn.close()
return result
5. File app.py (program CLI)
from database import create_table, insert_user, fetch_users
def main_menu():
while True:
print("\n=== MENU UTAMA ===")
print("1. Buat Tabel")
print("2. Tambah User")
print("3. Lihat Semua User")
print("4. Keluar")
pilihan = input("Pilih menu: ")
if pilihan == '1':
create_table()
print("Tabel berhasil dibuat.")
elif pilihan == '2':
nama = input("Masukkan nama: ")
email = input("Masukkan email: ")
insert_user(nama, email)
print("Data user berhasil disimpan.")
elif pilihan == '3':
users = fetch_users()
print("\n=== DATA USER ===")
for row in users:
print(row)
elif pilihan == '4':
print("Keluar dari aplikasi.")
break
else:
print("Pilihan tidak valid!")
if __name__ == "__main__":
main_menu()
6. Menjalankan Aplikasi
python app.py
🪟 Versi GUI (Tkinter)
1. Instalasi
pip install tk
3. File gui_app.py
import tkinter as tk
from tkinter import ttk, messagebox
from database import create_table, insert_user, fetch_users
class UserApp:
def __init__(self, root):
self.root = root
self.root.title("Aplikasi Database Python - Tkinter")
self.root.geometry("500x400")
frame_input = tk.Frame(self.root, padx=10, pady=10)
frame_input.pack(fill=tk.X)
tk.Label(frame_input, text="Nama:").grid(row=0, column=0, sticky=tk.W)
self.name_entry = tk.Entry(frame_input, width=40)
self.name_entry.grid(row=0, column=1)
tk.Label(frame_input, text="Email:").grid(row=1, column=0, sticky=tk.W)
self.email_entry = tk.Entry(frame_input, width=40)
self.email_entry.grid(row=1, column=1)
tk.Button(frame_input, text="Simpan", command=self.save_user).grid(row=2, column=1, pady=5, sticky=tk.E)
frame_table = tk.Frame(self.root)
frame_table.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
self.tree = ttk.Treeview(frame_table, columns=("ID", "Nama", "Email"), show="headings")
self.tree.heading("ID", text="ID")
self.tree.heading("Nama", text="Nama")
self.tree.heading("Email", text="Email")
self.tree.pack(fill=tk.BOTH, expand=True)
self.load_data()
def save_user(self):
name = self.name_entry.get()
email = self.email_entry.get()
if name and email:
insert_user(name, email)
messagebox.showinfo("Berhasil", "Data user berhasil disimpan!")
self.load_data()
self.name_entry.delete(0, tk.END)
self.email_entry.delete(0, tk.END)
else:
messagebox.showwarning("Peringatan", "Nama dan Email harus diisi!")
def load_data(self):
for row in self.tree.get_children():
self.tree.delete(row)
for row in fetch_users():
self.tree.insert("", tk.END, values=row)
if __name__ == "__main__":
create_table()
root = tk.Tk()
app = UserApp(root)
root.mainloop()
4. Menjalankan GUI
python gui_app.py