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!

Python - Database Access

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