Langsung ke konten utama

PYTHON SQLITE PROSES CRUD | APLIKASI KASIR POS ANDROID IOS MUDAH

 

SESI 04 : CRUD DENGAN DATABASE SQLITE DITABEL BARANG

Assalamualaikum warahmatullohi wabarohatuh, salam sukses. Pada bagian ke 4 ini kita akan memproses data-data yang ada dengan sebuah database yaitu SQLite.




SQLite merupakan salah satu database yang bersifat open source yang mendukung operasi relasi standar yang umum sebagaimana pada engine database seperti sintak SQL atau Query serta operasi relasinya, meski demikian database sqlite ini berukuran kecil dan mampu berjalan pada peranti dengan memori terbatas seperti smartphone.

Secara default Python dilengkapi dengan modul SQLite (sqlite3), modul yang sangat intuitif untuk bekerja dengan database SQLite dengan Python, tapi bilamana belum ada bisa di install secara manual dengan perintah "pip install pysqlite3".  

Secara umum untuk melakukan CRUD (create read Update delete) pada tabel di SQLite terdapat perintah dasar yang digunakan (query) adalah :


MEMBUAT DATABASE:

conn = sqlite3.connect('data.db')
mcur = conn.cursor()

di sini berfungsi ganda yaitu pertama melakukan koneksi dan mendeteksi apakah file data.db sudah ada atau belum, kalau beluam akan dibuat database dapi kalau sudah ada berarti kita melakukan connecting ke database tersebut.

 

MEMBUAT TABEL:

conn = sqlite3.connect('data.db')
mcur = conn.cursor()
mcur.execute("CREATE TABLE IF NOT EXISTS barang("\
             "kode TEXT DEFAULT ''    ,"\
             "nama TEXT DEFAULT ''    ,"\
             "harga INTEGER  DEFAULT 0)" 

TAMBAH DATA:

conn = sqlite3.connect('data.db')
mcur = conn.cursor()
mcur.execute("INSERT INTO barang (kode,nama,harga) VALUES('123','Permen',1000)")
conn.commit()

MEMBACA/AMBIL DATA:

conn = sqlite3.connect('data.db')
mcur = conn.cursor()
mcur.execute("SELECT * FROM barang")

UPDATE / MENGEDIT DATA:

conn = sqlite3.connect('data.db')
mcur = conn.cursor()
mcur.execute("UPDATE barang SET nama = 'Permen Karet' WHERE kode = '123' ")
conn.commit()

MENGHAPUS DATA:

conn = sqlite3.connect('data.db')
mcur = conn.cursor()
mcur.execute("DELETE FROM barang WHERE kode = '123' ")
conn.commit()


MENUTUP CONEKSI:

mcur.close()
conn.close()


Kembali ketopik  dicoding kita, karena itu di coding kita ada beberapa perubahan sintak terkait perubahan ke penyimpanan dengan database sqlite ini yaitu:
1. Kita panggil modul sqlitenya
    import sqlite3

2. buat database
    conn = sqlite3.connect("data_resto.db")
    mycursor = conn.cursor()

3. Buat tabel barang dengan field:
    kode (integer),   jenis (text),  nama (text), harga (integer), gambar (text), status (text)


Secara lengkapnya file python : MAIN.PY diubah sebagai berikut :

from kivy.lang import Builder
from kivy.core.window import Window
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.properties import StringProperty

from kivymd.app import MDApp
from kivymd.uix.floatlayout import MDFloatLayout

# bila install manuual --> pip install pysqlite3
import sqlite3

Window.size = (400,600)

Builder.load_file('menu.kv')
Builder.load_file('barang.kv')
Builder.load_file('barang_item.kv')
Builder.load_file('barang_new.kv')

def buat_database():
    conn = sqlite3.connect("data_resto.db")
    mycursor = conn.cursor()

    try:
        mycursor.execute("select * from barang ")
    except:  
        queri = "CREATE TABLE IF NOT EXISTS barang("\
                "kode INTEGER PRIMARY KEY AUTOINCREMENT,"\
                "jenis TEXT DEFAULT '',"\
                "nama TEXT DEFAULT '',"\
                "harga INTEGER  DEFAULT 0,"\
                "gambar TEXT DEFAULT '',"\
                "status TEXT DEFAULT '') "  
        mycursor.execute(queri)    
        conn.commit()    

    conn.close()

class MenuUtama(Screen):
    def buka_menubarang(self):
        self.manager.transition.direction = 'left'
        self.manager.current = 'MenuBarang'

class BarangItem(MDFloatLayout):
    jenis = StringProperty ("Item Food")
    nama = StringProperty ("Food No: 01")
    harga = StringProperty ('10000')
    gambar = StringProperty ("image/food01.png")

class BarangNew(Screen):
    def tampilkan_gambar(self,lokasi):
        self.ids.cetakgambar.source=lokasi

    def simpan(self):
        isijenis= self.ids.jenis.text.strip()
        isinama = self.ids.nama.text.strip()
        isiharga= '0' if self.ids.harga.text.strip()=='' else self.ids.harga.text
        isigambar= self.ids.gambar.text.strip()
        isistatus='kosong'

        conn = sqlite3.connect("data_resto.db")
        mycursor = conn.cursor()
        queri = "INSERT INTO barang (jenis,nama,harga,gambar,status) VALUES (?,?,?,?,?)"
        isinya=(isijenis,isinama,isiharga,isigambar,isistatus)
        mycursor.execute(queri,isinya)
        conn.commit()
        conn.close()

        self.ids.jenis.text =''
        self.ids.nama.text=''
        self.ids.harga.text=''
        self.ids.gambar.text=''
       
        self.manager.transition.direction = 'right'
        self.manager.current = 'MenuBarang'

class MenuBarang(Screen):
    def on_pre_enter(self):
        self.ids.gridbarang.clear_widgets()
        self.tampil_barang()
       
    def tampil_barang(self):
        conn = sqlite3.connect('data_resto.db')
        conn.row_factory = sqlite3.Row
        cur = conn.cursor()
        cur.execute("SELECT * FROM barang ")
        daftarbarang = cur.fetchall()
        conn.commit()
        conn.close()
       
        for record in daftarbarang:
            item=BarangItem()
            if record['jenis']=='1': item.jenis='Item Food'
            if record['jenis']=='2': item.jenis='Item Drink'
            if record['jenis']=='3': item.jenis='Item Snack'
            item.nama=record['nama']
            item.harga=str(record['harga'])
            item.gambar=record['gambar']
            self.ids.gridbarang.add_widget(item)
        return self

class MyResto(MDApp):
    def build(self):
        buat_database()
        sm = ScreenManager()
        sm.add_widget(MenuUtama(name='MenuUtama'))        
        sm.add_widget(MenuBarang(name='MenuBarang'))
        sm.add_widget(BarangNew(name='BarangNew'))
        return sm
       
   
MyResto().run()


Demikian penjelasan sesi ke 4 (empat) ini, semoga bermanfaat untuk lebih detailnya silahkan lihat videonya. Semoga kita diberikan kesehatan dan kesuksesan, wassalamualaikum warohmatullohi wabarohatuh. 


Komentar

...