Haloo apakah semua, kali ini saya akan memberikan tutorial mengenai CRUD di python dan kali ini saya akan menggunakan CSV sebagai penyimpanan datanya. Menurut wikipedia Comma Separated Values atau CSV adalah suatu format data dalam basis data di mana setiap record dipisahkan dengan tanda koma (,) atau titik koma (;). Selain sederhana, format ini dapat dibuka dengan berbagai text-editor seperti Notepad, Wordpad, ataupunMS Excel.
Okee baiklah langsung saja.
Cara membuat CRUD di python
Pertama kita import dulu modul yang akan kita gunakan di program ini.
import string
import random
import csv
import os
Lalu yang kedua kalian harus membuat varibel untuk sebagai tempat untuk memanggil file csv, oke sebelumnya kalian harus membuat dulu file csvnya, saya akan membuat dua file csv yang pertama itu stok.csv yaitu untuk menyimpan data stok barang dan users.csv yaitu untuk menyimpan data user, saya membuat file csvnya di data D
Oke langsung saja buat varibelnya :
data_csv = 'D:\stok.csv'
data_csv_users = 'D:\users.csv'
Nah selanjutnya yaitu membuat sebuah fungsi untuk halaman utama kita
def halaman_awal():
print("-"*55)
print("| CRUD DENGAN CSV |")
print("-"*55)
print("1. Login \n2. Daftar \n3. Keluar")
pilih = int(input("Masukan Pilihan : "))
if pilih == 1:
login()
elif pilih == 2:
daftar()
elif pilih == 3:
print("\n")
print("*"*36)
print("* PROGRAM DIHENTIKAN, TERIMA KASIH *")
print("*"*36)
exit(0)
else:
opsi = input("Masukan yang anda masukan salah, klik enter untuk melanjutkan ")
if opsi == "":
halaman_awal()
Selanjutnya kita akan membuat fungsi untuk menampilkan form pendaftaran bagi user yang belum mempunyai akun.
def daftar():
clear_screen()
users = []
with open(data_csv_users, mode="r+", newline='') as csv_file:
field = ['KODE','NAMA','USERNAME','PASSWORD','LEVEL']
tambah = csv.DictWriter(csv_file, fieldnames=field)
a = csv.DictReader(csv_file)
for row in a:
users.append(row)
print("\n=============DAFTAR================")
nama = input("Masukan Nama \t\t: ")
username = input("Masukan Username \t: ")
if not any(username in i['USERNAME'] for i in users):
password = input("Masukan Password \t: ")
level = "Admin"
kode = kode_acak()
tambah.writerow({'KODE' : kode, 'NAMA' : nama, 'USERNAME' : username, 'PASSWORD' : password, 'LEVEL' : level})
else:
opsi = input(" \u274c \u274c Username sudah dipakai, silah enter untuk coba yang lain ")
if opsi == "":
daftar()
pilih = input("\n\u2713 pendaftaran berhasil, silahkan enter untuk lanjut login ")
if pilih == "":
login()
Setelah pendaftaran berhasil maka user akan langsung diarahkan ke menu login.
berikut fungsi dari menu login
def login():
clear_screen()
users = []
with open(data_csv_users, mode="r") as csv_file:
baca_csv = csv.DictReader(csv_file)
for row in baca_csv:
users.append(row)
print("-"*55)
print("| LOGIN |")
print("-"*55)
username = input("Username \t: ")
password = input("Password \t: ")
if not any(username in data['USERNAME'] for data in users):
opsi = input("| \u274c \u274c Username Salah, Silahkan enter untuk ulangi \u274c \u274c |\n")
if opsi == "":
login()
else:
for i in users:
if (i['USERNAME'] == username and i['PASSWORD'] == password and i['LEVEL'] == 'Admin'):
admin()
lalu setelah itu user akan diarahkan ke menu utama admin yang akan berfungsi sebagai main menu untuk halaman admin
def admin():
# clear_screen()
print("-"*55)
print("| MENU UTAMA |")
print("-"*55)
print("1. Lihat Stok Barang \n2. Tambah Barang \n3. Update Barang \n4. Hapus Barang \n5. Cari Barang \n6. Logout")
pilih = input("Masukan Pilihan : ")
if pilih == "1":
lihat_stok()
elif pilih == "2":
tambah_barang()
elif pilih == "3":
Update_barang()
elif pilih == "4":
hapus_barang()
elif pilih == "5":
cari_barang()
elif pilih == "6":
halaman_awal()
else:
a = input(" \u274c \u274c Masukan yang anda masukan tidak sesui, klik enter untuk kembali \u274c \u274c ")
if a == "":
admin()
sekarang kita akan membuat fungsi untuk Melihat Stok, Tambah Barang, Update Barang, Hapus Barang, Cari Barang, dan pilihan untuk Log Out.
def lihat_stok():
clear_screen()
barang = []
with open(data_csv) as file_csv:
baca_csv = csv.reader(file_csv, delimiter=",")
for i in baca_csv:
barang.append(i)
if (len(barang) > 0):
label = barang.pop(0)
print("-"*55)
print("| STOK BARANG |")
print("-"*55)
print(f"{label[0]} \t {label[1]} \t\t {label[2]} \t {label[3]}")
print("-"*55)
for data in barang:
print(f"{data[0]} \t {data[1]} \t\t {data[2]} \t\t {data[3]}")
pilih = input("Tekan enter untuk kembali ke menu utama ")
if pilih == "":
admin()
else:
pilih = (" \u2718 Saat ini sedang tidak ada stok tersedia, tekan enter untuk kembali ")
if pilih == "":
admin()
def tambah_barang():
clear_screen()
barang = []
with open(data_csv, mode="r+", newline='') as csv_file:
field = ['KODE','NAMA_BARANG','BANYAK','HARGA']
tambah = csv.DictWriter(csv_file, fieldnames=field)
a = csv.DictReader(csv_file)
for row in a:
barang.append(row)
print("-"*55)
print("| TAMBAH BARANG |")
print("-"*55)
nama = input("Masukan Nama Barang \t: ").upper()
if not any(nama in i['NAMA_BARANG'] for i in barang):
banyak = input("Masukan Banyak Barang \t: ")
harga = input("Masukan Harga Satuan \t: ")
kode = kode_acak()
tambah.writerow({'KODE' : kode, 'NAMA_BARANG' : nama, 'BANYAK' : banyak, 'HARGA' : harga})
print("\n\u2713 Tambah barang berhasil. ")
pilih = input("klik enter untuk melanjutkan ")
if pilih == "":
# print(" \u274c \u274c Gagal menambahkan, barang sudah ada di dalam stok!")
admin()
def Update_barang():
clear_screen()
barang = []
with open(data_csv, mode="r") as csv_file:
baca_csv = csv.DictReader(csv_file)
for i in baca_csv:
barang.append(i)
print("KODE \t NAMA BARANG \t\t BANYAK \t HARGA")
print("-" * 55)
for data in barang:
print(f"{data['KODE']} \t {data['NAMA_BARANG']} \t\t
{data['BANYAK']} \t\t {data['HARGA']}")
{data['BANYAK']} \t\t {data['HARGA']}")
data_ketemu = []
indeks = 0
print("-"*55)
nama = input("Pilih barang yang akan diupdate : ").upper()
for data in barang:
if (data['NAMA_BARANG'] == nama):
data_ketemu = barang[indeks]
indeks = indeks + 1
if len(data_ketemu) > 0:
banyak = input("Banyak jumlah barang : ")
harga = input("Harga satuan terbaru : ")
indek = 0
for data in barang:
if (data['NAMA_BARANG'] == nama):
barang[indek]['BANYAK'] = banyak
barang[indek]['HARGA'] = harga
indek = indek + 1
with open(data_csv, mode="w", newline='') as csv_file:
field = ['KODE', 'NAMA_BARANG', 'BANYAK','HARGA']
writer = csv.DictWriter(csv_file, fieldnames=field)
writer.writeheader()
for data_baru in barang:
writer.writerow({'KODE': data_baru['KODE'],
'NAMA_BARANG': data_baru['NAMA_BARANG'],
'BANYAK': data_baru['BANYAK'], 'HARGA': data_baru['HARGA']})
'NAMA_BARANG': data_baru['NAMA_BARANG'],
'BANYAK': data_baru['BANYAK'], 'HARGA': data_baru['HARGA']})
pilih = input(" \u2713 Data berhasil diupdate,
tekan enter untuk kembali ke menu utama ")
tekan enter untuk kembali ke menu utama ")
if pilih == "":
admin()
else:
pilih = input(" \u274c \u274c Barang tidak ditemukan,
tekan enter untuk kembali ke menu utama ")
tekan enter untuk kembali ke menu utama ")
if pilih == "":
admin()
def hapus_barang():
clear_screen()
barang = []
with open(data_csv, mode="r") as csv_file:
baca_csv = csv.DictReader(csv_file)
for i in baca_csv:
barang.append(i)
print("-"*55)
print("| MENU UTAMA |")
print("-"*55)
print("KODE \t NAMA BARANG \t\t BANYAK \t HARGA")
print("-" * 55)
for data in barang:
print(f"{data['KODE']} \t {data['NAMA_BARANG']} \t\t
{data['BANYAK']} \t\t {data['HARGA']}")
{data['BANYAK']} \t\t {data['HARGA']}")
print("-----------------------")
nama = input("Hapus barang berdasarkan nama : ").upper()
index = 0
for data in barang:
if (data['NAMA_BARANG'] == nama):
barang.remove(barang[index])
index = index + 1
if nama == data['NAMA_BARANG']:
with open(data_csv, mode="w", newline='') as csv_file:
field = ['KODE','NAMA_BARANG','BANYAK','HARGA']
a = csv.DictWriter(csv_file, fieldnames=field)
a.writeheader()
for data_baru in barang:
a.writerow({'KODE': data_baru['KODE'],
'NAMA_BARANG': data_baru['NAMA_BARANG'],
'BANYAK': data_baru['BANYAK'], 'HARGA': data_baru['HARGA']})
'NAMA_BARANG': data_baru['NAMA_BARANG'],
'BANYAK': data_baru['BANYAK'], 'HARGA': data_baru['HARGA']})
print("\u2713 Data sudah terhapus")
pilih = input("Tekan enter untuk kembali ke menu utama ")
if pilih == "":
admin()
opsi = input(" \u274c \u274c Nama barang tersebut tidak ditemukan,
tekan enter untuk mengulangi ")
tekan enter untuk mengulangi ")
if opsi == "":
hapus_barang()
def cari_barang():
clear_screen()
barang = []
with open(data_csv, mode="r") as csv_file:
baca_csv = csv.DictReader(csv_file)
for row in baca_csv:
barang.append(row)
print("-"*55)
print("| CARI BARANG |")
print("-"*55)
nama = input("Cari berdasarkan nama barang : ").upper()
data_ketemu = []
indeks = 0
for data in barang:
if (data['NAMA_BARANG'] == nama):
data_ketemu = barang[indeks]
indeks = indeks + 1
if len(data_ketemu) > 0:
print("DATA DITEMUKAN : ")
print("-"*30)
print(f"Kode \t\t: {data_ketemu['KODE']}")
print(f"Nama Barang \t: {data_ketemu['NAMA_BARANG']}")
print(f"Banyak \t\t: {data_ketemu['BANYAK']}")
print(f"Harga \t\t: {data_ketemu['HARGA']}")
pilih = input("Klik enter untuk kembali ke menu utama ")
if pilih == "":
admin()
else:
pilih = input(" \u274c \u274c Tidak ada data ditemukan,
klik enter untuk kembali ke menu utama \u274c \u274c ")
klik enter untuk kembali ke menu utama \u274c \u274c ")
if pilih == "":
admin()
dan yang terakhir tambahkan kode berikut
if __name__=="__main__":
halaman_awal()
Itu adalah program python CRUD dengan file CSV sebagai tempat penyimpanan data, program ini tentunya bisa kalian improvisasi lagi sesuai dengan ide ide kalian. Selamat mencoba..
0 comments: