Python - Akses Pangkalan Data
Halo kepada semua yang mahu menjadi pengaturcara Python! Saya sangat gembira untuk menjadi pemandu anda dalam perjalanan yang menarik ini ke atas dunia akses pangkalan data menggunakan Python. Sebagai seseorang yang telah mengajar pemrograman untuk beberapa tahun, saya dapat memberikan jaminan kepada anda bahawa keterampilan ini tidak hanya penting tetapi juga sangat menguatkan. Jadi, mari kita melompat ke dalam dan membuka rahsia manipulasi pangkalan data dengan Python!
Akses Pangkalan Data di Python
Bayangkan anda sedang menguruskan sebuah perpustakaan yang besar. Anda ada ribuan buku, dan anda perlu satu sistem untuk mengesan mereka semua. Itulah hampir yang mana pangkalan data lakukan, tetapi untuk maklumat digital. Python, sebagai bahasa yang serba boleh ini, menawarkan beberapa cara untuk berinteraksi dengan pangkalan data. Hari ini, kita akan fokus kepada dua cara yang popular: menggunakan modul sqlite3
untuk pangkalan data SQLite dan modul PyMySQL
untuk pangkalan data MySQL.
Modul sqlite3
SQLite adalah seperti satu pangkalan data kecil yang terbina-dalam dengan Python. Ia adalah sempurna untuk aplikasi kecil atau apabila anda masih baru mula. Mari kita mula dengan mengimport modul ini:
import sqlite3
Baris ini adalah seperti memberitahu Python, "Hey, kita akan bekerja dengan pangkalan data SQLite, jadi bersiap-siap!"
Objek Sambungan
Untuk bekerja dengan pangkalan data, kita pertama-tama perlu untuk menyambung kepadanya. Bayangkan seperti untuk mengenaikan pintu perpustakaan digital anda. Ini adalah cara kita melakukannya:
conn = sqlite3common("example.db")
Baris ini mencipta satu fail pangkalan data baru bernama "example.db" jika ia tidak wujud, atau membukanya jika ia wujud. Variabel conn
adalah kunci kita ke pangkalan data ini.
Objek Kursor
Sekarang kita sudah di atas perpustakaan digital kita, kita perlu satu cara untuk bergerak dan memanipulasi perkara. Itulah fungsi kursor. Mari kita cipta satu:
cursor = conn.cursor()
Bayangkan kursor sebagai asisten pustakawan anda, siap untuk mengambil atau mengubah maklumat atas perintah anda.
Mencipta Jadual Pangkalan Data
Mari kita mencipta satu jadual untuk menyimpan beberapa maklumat. Bayangkan kita sedang untuk mengatalog buku:
cursor.execute('''CREATE TABLE IF NOT EXISTS books
(id INTEGER PRIMARY KEY,
title TEXT,
author TEXT,
year INTEGER)''')
Arahan SQL ini mencipta satu jadual bernama "books" dengan lajur untuk id, title, author, dan year. Bahagian IF NOT EXISTS
memastikan kita tidak secara不小心 mencipta jadual pendua.
Operasi INSERT
Sekarang, mari kita tambahkan beberapa buku ke pangkalan data kita:
cursor.execute("INSERT INTO books (title, author, year) VALUES (?, ?, ?)",
("To Kill a Mockingbird", "Harper Lee", 1960))
conn.commit()
Ini memasukkan satu buku baru ke atas jadual kita. Tanda ?
adalah tempat penyimpanan untuk data kita, yang membantu menghindarkan serangan penyuntikan SQL (topik untuk hari lain!). Metode commit()
menyimpan perubahan kita.
Operasi BACA
Mari kita dapatkan beberapa data:
cursor.execute("SELECT * FROM books")
books = cursor.fetchall()
for book in books:
print(f"ID: {book[0]}, Title: {book[1]}, Author: {book[2]}, Year: {book[3]}")
Ini mengambil semua buku dan mencetak mereka keluar. Ia adalah seperti meminta asisten pustakawan kita untuk menunjukkan semua buku yang kita ada.
Operasi UPDATE
Perlu untuk membetulkan beberapa maklumat? Tidak masalah:
cursor.execute("UPDATE books SET year = ? WHERE title = ?", (1925, "The Great Gatsby"))
conn.commit()
Ini mengemas kini tahun publikasi "The Great Gatsby". Selalu ingat untuk melaksanakan perubahan anda!
Operasi DELETE
Kadang-kadang kita perlu untuk menghapuskan penyertaan:
cursor.execute("DELETE FROM books WHERE author = ?", ("J.K. Rowling",))
conn.commit()
Ini menghapuskan semua buku oleh J.K. Rowling dari pangkalan data kita. Berhati-hati dengan operasi DELETE - tiada butang undo di atas pangkalan data!
Melakukan Transaksi
Transaksi adalah satu cara untuk mengelompokkan operasi bersama-sama. Jika mana-mana operasi gagal, semuanya akan dibatalkan. Ia seperti satu pendekatan "semua atau tiada":
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("Transaction successful!")
except sqlite3.Error as e:
conn.rollback()
print(f"An error occurred: {e}")
Operasi COMMIT
Kami telah menggunakan commit()
sepanjang contoh kita. Ia adalah penting untuk menyimpan perubahan kita ke pangkalan data. Tanpa itu, perubahan kita akan hilang apabila kita menutup sambungan.
Operasi ROLLBACK
Jika sesuatu yang salah berlaku semasa transaksi, kita boleh menggunakan rollback()
untuk membatalkan semua perubahan yang dibuat sejak komit terakhir:
try:
# Some database operations
conn.commit()
except sqlite3.Error:
conn.rollback()
Modul PyMySQL
Walaupun SQLite adalah bagus untuk belajar dan aplikasi kecil, banyak projek dunia sebenar menggunakan pangkalan data yang lebih kuat seperti MySQL. Mari kita lihat secara cepat bagaimana untuk 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()
Prinsip dasar adalah serupa dengan SQLite, tetapi PyMySQL membenarkan kita untuk menyambung ke pangkalan data MySQL jauh.
MengendalikanRalat
Pengendalian ralat adalah penting apabila bekerja dengan pangkalan data. Selalu gunakan blok try-except untuk mencapture dan menguruskan ralat potensial:
try:
# Database operations here
except sqlite3.Error as e:
print(f"An error occurred: {e}")
finally:
conn.close()
Ini memastikan bahwa kita menguruskan ralat dengan sopan dan selalu menutup sambungan pangkalan data kita, walaupun ralat berlaku.
Berikut adalah jadual yang menyummarikan operasi pangkalan data utama yang kita telah cuba:
Operasi | Keterangan | Contoh |
---|---|---|
Connect | Membuat sambungan ke pangkalan data | conn = sqlite3common("example.db") |
Create | Mencipta satu jadual atau rakaman baru | cursor.execute("CREATE TABLE...") |
Insert | Menambah rakaman baru ke atas jadual | cursor.execute("INSERT INTO...") |
Select | Mengambil data dari pangkalan data | cursor.execute("SELECT...") |
Update | Mengubah rakaman yang ada | cursor.execute("UPDATE...") |
Delete | Menghapuskan rakaman dari jadual | cursor.execute("DELETE FROM...") |
Commit | Menyimpan perubahan ke pangkalan data | conn.commit() |
Rollback | Membatalkan perubahan sejak komit terakhir | conn.rollback() |
Dan itu adalah semua! Anda baru sahaja mengambil langkah pertama anda ke atas dunia akses pangkalan data dengan Python. Ingat, latihan membuat perfection, jadi jangan takut untuk untuk bereksperimen dengan konsep ini. Sebelum anda tahu, anda akan menguruskan data seperti pro! Happy coding, dan may pangkalan data anda sentiasa berurus dan bebas dari ralat!
Credits: Image by storyset