Programming

Python dan SQLite Database

oleh Ekky Armandi • 18 Des 2023

![[images/python-sqlite-db/jan-antonin-kolar-lRoX0shwjUQ-unsplash.jpg|Thumbnail of Python dan SQLite Database]]

Kali ini saya akan membahas tentang cara menghubungkan database dan memanipulasi data pada SQLite database melalui bahasa pemrograman Python.

Singkatnya SQLite adalah bentuk database paling sederhana yang tidak memerlukan instalasi apapun didepan. Hanya cukup menggunakan library sqlite3, yang bahkan sudah built-in dengan bahasa pemrograman Python. Programmer hanya cukup mengeksekusi satu SQL query, dan secara otomatis database akan dibuat dengan sendirinya sesuai alamat database yang dimaksud didalam direktori.

Python progamming akan menjadi interface untuk mengeksekusi SQL query sehingga memungkinkan user untuk melakukan hal seperti Create, Read, Update, dan Delete (CRUD) seperti pada umumnya ketika bekerja dengan database.

Dalam catatan ini ada tiga poin yang akan saya sampaikan:

  1. Cara terhubung dengan SQLite database
  2. Cara mengeksekusi SQL query menggunakan Python, dan
  3. Cara membuat (create), membaca (read), mengubah (udpate), dan menghapus (delete)

Cara terhubung dengan SQLite database

Terhubung dengan SQLite database sangat mudah. User hanya cukup membuat koneksi dengan database yang dituju sebagai berikut

import sqlite3

conn = sqlite3.connect("alamat-database.db")
conn.close()

# atau

with sqlite3.connect("alamat-database.db") as conn:
	curr = conn.cursor()

Cara mengeksekusi SQL query menggunakan Python

Dari code snippet diatas, kamu mungkin memperhatikan ada kode curr = conn.cursor() , baris kode tersebut digunakan untuk mereferensi SQL cursor yang akan mengeksekusi SQL query.

User baru bisa mengeksekusi SQL query setelah terhubung dengan database dan SQL query pada dasarnya adalah bahasa pemrograman SQL untuk membuat tabel dan memanipulasi SQL database.

Berikut adalah cara mengeksekusi SQL query untuk membuat tabel dalam suatu database:

import sqlite3

with sqlite3.connect("database-ku.db") as conn:
	curr = conn.cursor()
	curr.execute("""
	CREATE TABLE tabel (
			kolom1 TEXT,
			kolom2 INTEGER NOT NULL
	);
	""")
	conn.commit()

Perintah terakhir seperti conn.commit() berarti memberi perintah tambahan untuk mengimplementasi perubahan tersebut kedalam database. Karena jika tidak, curr.execute() hanya akan berakhir pada tahap kalkulasi dan tidak akan dilanjutkan pada tahap implementasi perintah pada database yang dimaksud. Oleh karenanya dibutuhkan metode commit().

Untuk melihat bagaimana tabel tersebut user dapat menginstall VS Code extension seperti SQLite Viewer atau database driver seperti DB Browser atau DBeaver seperti dibawah:

  • SQLite Viewer

    ![[images/python-sqlite-db/Untitled.png|sqlite viewer vs code extension]]

  • DB Browser for SQLite

    ![[images/python-sqlite-db/Untitled 1.png|db browser for sqlite]]

  • DBeaver

    ![[images/python-sqlite-db/Untitled 2.png|dbeaver]]

SQLite CRUD

CRUD adalah kegiatan utama ketika bekerja dengan database. Pada dasarnya syntax SQLite pada Python hanyalah menghubungkan dan menjalankan SQL query yang dituliskan. Sehingga aktifitas seperti membuat, membaca, mengubah, dan menghapus data didalam database akan dilakukan oleh SQL query itu sendiri dan Python hanyalah perantaranya.

  1. Membuat (Create)

    Contoh create sebenarnya dapat dilihat pada kode sebelumnya diatas. Namun singkatnya, Python SQLite melakukan execute kemudian commit untuk menerapkan perintah pada database.

  2. Membaca (Read)

    Aktifias membaca disini lebih pada mengambil data didalam suatu database. Ketika tabel dibuat, user dapat menajalan SQL query untuk membaca kolom data yang dimaksud dari database. Umumnya SQL query yang digunakan untuk membaca data adalah perintah SELECT sebagai berikut:

    import sqlite3
    
    with sqlite3.connect("database-ku.db") as conn:
    	curr = conn.cursor()
    	curr.execute("SELECT * FROM tabel;")
    	result = curr.fetchall()

    SELECT * FROM tabel dibaca “Pilih semua kolom dari tabel tabel.” Dan pada baris terakhir, fetchall() digunakan untuk mengambil data yang ditampung didalam memory sementara dari SQLite client kemudian memindahkannya kedalam variabel result. Selain fetchall(), user juga dapat mengambil sebagian saja dari baris data yang dibaca oleh SQL query menggunakan metode lain seperti fetchone() untuk ambil satu baris data dan fetchmany(n) untuk mengambil n baris data.

  3. Mengubah (Update)

    Sama halnya dengan membuat tabel, ketika ingin mengubah suatu data didalam database, Python harus menjalankan perintah commit() untuk mengimplementasi perubahan tersebut. Berbeda dengan query CREATE TABLE, untuk mengubah suatu data user harus menggunakan perintah UPDATE dan SET sebagai berikut:

    import sqlite3
    
    with sqlite3.connect("database-ku.db") as conn:
    	curr = conn.cursor()
    	curr.execute("""
    	UPDATE tabel SET kolom1='Test', kolom2=0
    	WHERE kolom2=1;
    	""")
    	conn.commit()

    Perintah UPDATE tabel SET kolom1='Test', kolom2=0 WHERE kolom2=1; dapat diartikan sebagai “Pada tabel ubah kolom1 menjadi “Test” dan kolom2 menjadi 0 untuk kolom2 sama dengan 1.” Dan commit untuk menerapkan perubahan tersebut pada database.

  4. Menghapus (Delete)

    Menghapus merupakan aktifitas yang sama seperti CREATE dan UPDATE, ia mengubah database dalam tujuan untuk menghilangkan satu atau sebagian data yang dituju lalu kemudian menerapkan perubahan tersebut kedalam database melalui perintah commit sebagai berikut.

    import sqlite3
    
    with sqlite3.connect("database-ku.db") as conn:
    	curr = conn.cursor()
    	curr.execute("""
    	DELETE FROM tabel WHERE kolom2=0;
    	""")
    	conn.commit()

    Klausa DELETE dan WHERE adalah perintah yang cukup krusial ketika user ingin menghapus data didalam database. Tanpa WHERE, SQL query akan menghapus semua data pada tabel yang dituju. DELETE FROM tabel WHERE kolom2=0; dapat diartikan sebagai “Hapus dari tabel tabel untuk setiap kolom2 sama dengan 0.”

Semoga tutorial terkait SQLite database dan Python programming ini cukup membantu. Trimakasih sudah menyempatkan waktu untuk membaca.

Follow me on