Python - Akses Basis Data

Halo para pemrogram Python yang berbakat! Saya senang menjadi pemandu Anda dalam perjalanan yang menarik ini ke dunia akses basis data menggunakan Python. Sebagai seseorang yang telah mengajar pemrograman selama tahun-tahun, saya bisa menjamin bahwa keterampilan ini tidak hanya penting tetapi juga sangat menguatkan. Jadi, mari kita melompat kedalam dan membuka rahasia manipulasi basis data dengan Python!

Python - Database Access

Akses Basis Data di Python

Bayangkan Anda sedang mengorganisir sebuah perpustakaan yang besar. Anda punya ribuan buku, dan Anda butuh sebuah sistem untuk melacak semuanya. Itu hampir sama dengan apa yang dilakukan basis data, tapi untuk informasi digital. Python, sebagai sebuah bahasa yang serbaguna, menawarkan beberapa cara untuk berinteraksi dengan basis data. Hari ini, kita akan fokus pada dua metode yang populer: menggunakan modul sqlite3 untuk basis data SQLite dan modul PyMySQL untuk basis data MySQL.

Modul sqlite3

SQLite seperti sebuah basis data kecil yang sudah terpasang dengan Python. Ini sempurna untuk aplikasi kecil atau ketika Anda baru mulai. Mari kita mulai dengan mengimpor modul:

import sqlite3

Baris ini seperti memberi tahu Python, "Hey, kita akan bekerja dengan basis data SQLite, jadi bersiaplah!"

Objek Koneksi

Untuk bekerja dengan basis data, kita pertama-tama perlu untuk terkoneksi dengannya. Bayangkan itu seperti mengetuk pintu perpustakaan digital Anda. Ini cara kita melakukannya:

conn = sqlite3.connect("example.db")

Baris ini membuat sebuah file basis data baru bernama "example.db" jika belum ada, atau membukanya jika sudah ada. Variabel conn adalah kunci kita ke basis data ini.

Objek Cursor

Sekarang bahwa kita sudah di dalam perpustakaan digital kita, kita perlu sebuah cara untuk bergerak dan memanipulasi hal-hal. Itu yang dilakukan cursor. Mari kita buat satu:

cursor = conn.cursor()

Pikirkan cursor sebagai asisten pustakawan Anda, siap untuk mengambil atau mengubah informasi atas perintah Anda.

Membuat Tabel Basis Data

Mari kita buat sebuah tabel untuk menyimpan beberapa informasi. Bayangkan kita sedang mengkatalog buku:

cursor.execute('''CREATE TABLE IF NOT EXISTS books
(id INTEGER PRIMARY KEY,
title TEXT,
author TEXT,
year INTEGER)''')

Perintah SQL ini membuat sebuah tabel bernama "books" dengan kolom untuk id, title, author, dan year. Bagian IF NOT EXISTS memastikan kita tidak membuat tabel ganda secara tidak sengaja.

Operasi INSERT

Sekarang, mari kita tambahkan beberapa buku ke basis data kita:

cursor.execute("INSERT INTO books (title, author, year) VALUES (?, ?, ?)",
("To Kill a Mockingbird", "Harper Lee", 1960))
conn.commit()

Ini menambahkan sebuah buku baru ke tabel kita. Tanda ? adalah placeholder untuk data kita, yang membantu mencegah serangan SQL injection (topik untuk hari lain!). Metode commit() menyimpan perubahan kita.

Operasi READ

Mari kitaambil beberapa data:

cursor.execute("SELECT * FROM books")
books = cursor.fetchall()
for book in books:
print(f"ID: {book[0]}, Judul: {book[1]}, Penulis: {book[2]}, Tahun: {book[3]}")

Ini mengambil semua buku dan mencetak mereka. Itu seperti meminta asisten pustakawan kita untuk menunjukkan semua buku yang kita miliki.

Operasi UPDATE

Perlu untuk memperbaiki beberapa informasi? Tidak masalah:

cursor.execute("UPDATE books SET year = ? WHERE title = ?", (1925, "The Great Gatsby"))
conn.commit()

Ini memperbarui tahun publikasi "The Great Gatsby". Selalu ingat untuk melakukan commit pada perubahan Anda!

Operasi DELETE

Kadang-kadang kita perlu untuk menghapus entri:

cursor.execute("DELETE FROM books WHERE author = ?", ("J.K. Rowling",))
conn.commit()

Ini menghapus semua buku oleh J.K. Rowling dari basis data kita. Berhati-hatilah dengan operasi DELETE - tidak ada tombol undo di basis data!

Melakukan Transaksi

Transaksi adalah cara untuk mengelompokkan operasi bersama-sama. Jika salah satu operasi gagal, semua akan dibatalkan. Itu seperti sebuah pendekatan "semua atau tidak ada":

try:
conn.execute("BEGIN TRANSACTION")
cursor.execute("INSERT INTO books (title, author, year) VALUES (?, ?, ?)",
("1984", "George Orwell", 1949))
cursor.execute("INSERT INTO books (title, author, year) VALUES (?, ?, ?)",
("Animal Farm", "George Orwell", 1945))
conn.commit()
print("Transaksi berhasil!")
except sqlite3.Error as e:
conn.rollback()
print(f"Terjadi kesalahan: {e}")

Operasi COMMIT

Kita telah menggunakan commit() selama contoh kita. Ini sangat penting untuk menyimpan perubahan kita ke basis data. Tanpa itu, perubahan kita akan hilang ketika kita menutup koneksi.

Operasi ROLLBACK

Jika ada kesalahan saat transaksi, kita dapat menggunakan rollback() untuk membatalkan semua perubahan yang dibuat sejak commit terakhir:

try:
# Beberapa operasi basis data
conn.commit()
except sqlite3.Error:
conn.rollback()

Modul PyMySQL

Meskipun SQLite bagus untuk belajar dan aplikasi kecil, banyak proyek dunia nyata menggunakan basis data yang lebih kuat seperti MySQL. Mari kita lihat secara cepat bagaimana menggunakan PyMySQL:

import pymysql

conn = pymysql.connect(host='localhost',
user='your_username',
password='your_password',
database='your_database')

try:
with conn.cursor() as cursor:
sql = "INSERT INTO users (email, password) VALUES (%s, %s)"
cursor.execute(sql, ('[email protected]', 'very-secret'))
conn.commit()
finally:
conn.close()

Prinsipnya sama seperti SQLite, tetapi PyMySQL memungkinkan kita untuk terkoneksi ke basis data MySQL jarak jauh.

Penanganan Kesalahan

Penanganan kesalahan adalah penting saat bekerja dengan basis data. Selalu gunakan blok try-except untuk menangkap dan menangani kemungkinan kesalahan:

try:
# Operasi basis data di sini
except sqlite3.Error as e:
print(f"Terjadi kesalahan: {e}")
finally:
conn.close()

Ini memastikan bahwa kita menangani kesalahan dengan baik dan selalu menutup koneksi basis data, bahkan jika terjadi kesalahan.

Berikut adalah tabel yang ringkasan operasi basis data utama yang kita pelajari:

Operasi Deskripsi Contoh
Connect Membuat koneksi ke basis data conn = sqlite3.connect("example.db")
Create Membuat tabel atau rekaman baru cursor.execute("CREATE TABLE...")
Insert Menambahkan rekaman baru ke tabel cursor.execute("INSERT INTO...")
Select Mengambil data dari basis data cursor.execute("SELECT...")
Update Mengubah rekaman yang ada cursor.execute("UPDATE...")
Delete Menghapus rekaman dari tabel cursor.execute("DELETE FROM...")
Commit Menyimpan perubahan ke basis data conn.commit()
Rollback Membatalkan perubahan sejak commit terakhir conn.rollback()

Dan itu adalah! Anda baru saja mengambil langkah pertamanya ke dunia akses basis data dengan Python. Ingat, praktek membuat perfect, jadi jangan takut untuk bereksperimen dengan konsep ini. Sebelum Anda sadar, Anda akan mengelola data seperti seorang pro! Selamat coding, dan semoga basis data Anda selalu terorganisir dan bebas dari kesalahan!

Credits: Image by storyset