Python - Truy Cập Cơ Sở Dữ Liệu

Chào bạn nhé, các nhà lập trình Python mới nhất! Tôi rất vui được làm hướng dẫn cho bạn trong hành trình thú vị vào thế giới truy cập cơ sở dữ liệu bằng Python. Như một người đã dạy lập trình trong nhiều năm, tôi có thể đảm bảo rằng kỹ năng này không chỉ cần thiết mà còn rất là cung cấp sức mạnh. Hãy bắt đầu và khám phá bí mật thao tác cơ sở dữ liệu với Python!

Python - Database Access

Truy Cập Cơ Sở Dữ Liệu Trong Python

Hãy tưởng tượng bạn đang tổ chức một thư viện lớn. Bạn có hàng ngàn cuốn sách và cần một hệ thống để theo dõi chúng tất cả. Đó chính là điều gì một cơ sở dữ liệu làm, nhưng cho thông tin điện tử. Python, dù là ngôn ngữ linh hoạt như vậy, cung cấp nhiều cách để tương tác với cơ sở dữ liệu. Hôm nay, chúng ta sẽ tập trung vào hai phương pháp phổ biến: sử dụng mô-đun sqlite3 cho cơ sở dữ liệu SQLite và mô-đun PyMySQL cho cơ sở dữ liệu MySQL.

Mô-đun sqlite3

SQLite như một cơ sở dữ liệu nhỏ đi kèm với Python. Nó hoàn hảo cho các ứng dụng nhỏ hoặc khi bạn mới bắt đầu. Hãy bắt đầu bằng cách nhập mô-đun:

import sqlite3

Dòng này như là bạn nói với Python, "Hey, chúng ta sẽ làm việc với cơ sở dữ liệu SQLite, vậy hãy chuẩn bị!"

Đối Tượng Kết Nối

Để làm việc với cơ sở dữ liệu, trước tiên chúng ta cần kết nối với nó. Hãy tưởng tượng nó như là bạn đánh cửa vào thư viện điện tử của mình. Đây là cách chúng ta làm:

conn = sqlite3common("example.db")

Dòng này tạo một tệp cơ sở dữ liệu mới có tên "example.db" nếu nó không tồn tại, hoặc mở nó nếu nó đã tồn tại. Biến conn là chìa khóa vào cơ sở dữ liệu này.

Đối Tượng Con Trỏ

Bây giờ khi chúng ta đã ở trong thư viện điện tử của mình, chúng ta cần một cách để di chuyển và thao tác. Đó là cái nào mà con trỏ làm. Hãy tạo một con trỏ:

cursor = conn.cursor()

Hãy tưởng tượng con trỏ như là trợ lý thủ thư của bạn, sẵn sàng lấy hoặc thay đổi thông tin theo lệnh của bạn.

Tạo Bảng Cơ Sở Dữ Liệu

Hãy tạo một bảng để lưu trữ một số thông tin. Hãy tưởng tượng chúng ta đangataloging sách:

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

Lệnh SQL này tạo một bảng có tên "books" với các cột cho id, title, author và year. Phần IF NOT EXISTS đảm bảo chúng ta không tạo bảng trùng lặp.

Thao Tác INSERT

Bây giờ, hãy thêm một số sách vào cơ sở dữ liệu của chúng ta:

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

Dòng này chèn một cuốn sách mới vào bảng của chúng ta. Dấu ? là dấu đặt trước cho dữ liệu của chúng ta, giúp ngăn chặn các cuộc tấn công SQL injection (chủ đề cho một ngày khác!). Phương thức commit() lưu các thay đổi của chúng ta.

Thao Tác ĐỌC

Hãy lấy một số dữ liệu:

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]}")

Dòng này lấy tất cả các cuốn sách và in chúng ra. Nó như là bạn yêu cầu trợ lý thủ thư của mình hiển thị tất cả các cuốn sách mà bạn có.

Thao Tác Cập Nhật

Cần sửa đổi một số thông tin? Không vấn đề:

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

Dòng này cập nhật năm xuất bản của "The Great Gatsby". Luôn nhớ để ghi lại các thay đổi của bạn!

Thao Tác XÓA

Đôi khi chúng ta cần loại bỏ các mục:

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

Dòng này loại bỏ tất cả các cuốn sách của J.K. Rowling khỏi cơ sở dữ liệu của bạn. Hãy cẩn thận với các thao tác DELETE - không có nút undo trong cơ sở dữ liệu!

Thực Hiện Giao Dịch

Giao dịch là cách để nhóm các hoạt động lại với nhau. Nếu bất kỳ hoạt động nào thất bại, tất cả chúng sẽ bị hủy bỏ. Nó như một cách tiếp cận "tất cả hoặc không có gì":

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}")

Thao Tác COMMIT

Chúng ta đã sử dụng commit() trong các ví dụ của chúng ta. Nó rất quan trọng để lưu các thay đổi của bạn vào cơ sở dữ liệu. Nếu không có nó, các thay đổi của bạn sẽ bị mất khi bạn đóng kết nối.

Thao Tác ROLLBACK

Nếu có gì đó không ổn trong một giao dịch, chúng ta có thể sử dụng rollback() để hoàn tác tất cả các thay đổi đã được thực hiện kể từ lần commit cuối cùng:

try:
# Các hoạt động cơ sở dữ liệu ở đây
conn.commit()
except sqlite3.Error:
conn.rollback()

Mô-đun PyMySQL

Trong khi SQLite rất tốt cho học tập và các ứng dụng nhỏ, nhiều dự án thực tế sử dụng các cơ sở dữ liệu mạnh mẽ hơn như MySQL. Hãy xem nhanh cách sử dụng 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()

Các nguyên tắc cơ bản tương tự như SQLite, nhưng PyMySQL cho phép chúng ta kết nối với các cơ sở dữ liệu MySQL từ xa.

Xử Lý Lỗi

Xử lý lỗi rất quan trọng khi làm việc với cơ sở dữ liệu. Luôn sử dụng các khối try-except để bắt và xử lý các lỗi tiềm ẩn:

try:
# Các hoạt động cơ sở dữ liệu ở đây
except sqlite3.Error as e:
print(f"An error occurred: {e}")
finally:
conn.close()

Điều này đảm bảo rằng chúng ta xử lý lỗi một cách trân trọng và luôn đóng kết nối cơ sở dữ liệu của mình, ngay cả khi một lỗi xảy ra.

Dưới đây là bảng tóm tắt các hoạt động cơ sở dữ liệu chính mà chúng ta đã trình bày:

Hoạt Động Mô Tả Ví Dụ
Kết Nối Thiết lập kết nối với cơ sở dữ liệu conn = sqlite3common("example.db")
Tạo Tạo một bảng hoặc bản ghi mới cursor.execute("CREATE TABLE...")
Chèn Thêm bản ghi mới vào bảng cursor.execute("INSERT INTO...")
Chọn Lấy dữ liệu từ cơ sở dữ liệu cursor.execute("SELECT...")
Cập Nhật Chỉnh sửa bản ghi hiện tại cursor.execute("UPDATE...")
Xóa Loại bỏ bản ghi khỏi bảng cursor.execute("DELETE FROM...")
Commit Lưu các thay đổi vào cơ sở dữ liệu conn.commit()
Rollback Hoàn tác các thay đổi kể từ lần commit cuối cùng conn.rollback()

Và đó là thế! Bạn đã bước chân vào thế giới truy cập cơ sở dữ liệu với Python. Nhớ rằng, thực hành là chìa khóa để hoàn thành. Đừng sợ thử nghiệm với các khái niệm này. Trước khi bạn biết nó, bạn sẽ quản lý dữ liệu như một chuyên gia! Chúc bạn mãi mãi có các cơ sở dữ liệu được tổ chức và không có lỗi! Học tốt!

Credits: Image by storyset