Cập nhật kinh nghiệm của bác sĩ trong nhiều năm bằng Python
Trong bài viết này, mình sẽ thực hiện chức năng cập nhật kinh nghiệm của một bác sĩ nhất định trong nhiều năm. Giả sử rằng giá trị của cột "kinh nghiệm" cho mỗi bác sĩ là null và muốn cập nhật giá trị này dựa trên ngày tham gia của bác sĩ. Mình sẽ triển khai chức năng này bằng cách sử dụng ba hệ quản trị cơ sở dữ liệu phổ biến: MySQL Python, PostgreSQL Python và SQLite trong Python.
MySQL Python
Bước 1: Kết nối cơ sở dữ liệu MySQL
Trước tiên, mình cần kết nối đến cơ sở dữ liệu MySQL. Bạn cần cung cấp thông tin đăng nhập và tên cơ sở dữ liệu của bạn.
import mysql.connector
# Thay đổi thông tin kết nối tới cơ sở dữ liệu của bạn
db_connection = mysql.connector.connect(
    host="localhost",
    user="your_username",
    password="your_password",
    database="your_database"
)
# Tạo đối tượng cursor để thực hiện truy vấn
cursor = db_connection.cursor()
Bước 2: Xác định truy vấn SQL để cập nhật kinh nghiệm
Mình cần xác định truy vấn SQL để cập nhật kinh nghiệm của một bác sĩ nhất định trong nhiều năm dựa trên ngày gia nhập của bác sĩ.
def update_doctor_experience(doctor_id):
    try:
        # Xác định ngày gia nhập của bác sĩ
        join_date_query = "SELECT join_date FROM doctors WHERE doctor_id = %s"
        cursor.execute(join_date_query, (doctor_id,))
        join_date = cursor.fetchone()[0]
        # Tính toán số năm kinh nghiệm
        current_year = datetime.date.today().year
        join_year = join_date.year
        experience_years = current_year - join_year
        # Truy vấn SQL để cập nhật kinh nghiệm
        update_query = "UPDATE doctors SET experience = %s WHERE doctor_id = %s"
        cursor.execute(update_query, (experience_years, doctor_id))
        db_connection.commit()
        print(f"Đã cập nhật kinh nghiệm của bác sĩ có mã {doctor_id} thành {experience_years} năm.")
    except mysql.connector.Error as err:
        print(f"Lỗi MySQL: {err}")
    finally:
        # Đóng kết nối đến cơ sở dữ liệu
        cursor.close()
        db_connection.close()
# Gọi hàm để cập nhật kinh nghiệm của bác sĩ có mã là 101
update_doctor_experience(101)
Kết quả
Khi bạn gọi hàm update_doctor_experience(101), nó sẽ kết nối đến cơ sở dữ liệu MySQL của bạn, tính toán số năm kinh nghiệm dựa trên ngày gia nhập và cập nhật giá trị kinh nghiệm cho bác sĩ có mã là 101. Kết quả có thể như sau:
Đã cập nhật kinh nghiệm của bác sĩ có mã 101 thành 15 năm.
Lưu ý rằng bạn cần phải thay đổi thông tin kết nối cơ sở dữ liệu (host, user, password, database) để phù hợp với cơ sở dữ liệu MySQL của bạn.
PostgreSQL Python
Bước 1: Kết nối cơ sở dữ liệu PostgreSQL
Trước tiên, mình cần kết nối đến cơ sở dữ liệu PostgreSQL. Để làm điều này, ta sử dụng thư viện psycopg2.
import psycopg2
# Thay đổi thông tin kết nối tới cơ sở dữ liệu của bạn
conn = psycopg2.connect(
    host="localhost",
    user="your_username",
    password="your_password",
    database="your_database"
)
# Tạo đối tượng cursor để thực hiện truy vấn
cursor = conn.cursor()
Bước 2: Xác định truy vấn SQL để cập nhật kinh nghiệm
Mình cũng xác định truy vấn SQL tương tự như trong giải pháp MySQL để cập nhật kinh nghiệm của một bác sĩ nhất định trong nhiều năm.
def update_doctor_experience(doctor_id):
    try:
        # Xác định ngày gia nhập của bác sĩ
        join_date_query = "SELECT join_date FROM doctors WHERE doctor_id = %s"
        cursor.execute(join_date_query, (doctor_id,))
        join_date = cursor.fetchone()[0]
        # Tính toán số năm kinh nghiệm
        current_year = datetime.date.today().year
        join_year = join_date.year
        experience_years = current_year - join_year
        # Truy vấn SQL để cập nhật kinh nghiệm
        update_query = "UPDATE doctors SET experience = %s WHERE doctor_id = %s"
        cursor.execute(update_query, (experience_years, doctor_id))
        conn.commit()
        print(f"Đã cập nhật kinh nghiệm của bác sĩ có mã {doctor_id} thành {experience_years} năm.")
    except psycopg2.Error as err:
        print(f"Lỗi PostgreSQL: {err}")
    finally:
        # Đóng kết nối đến cơ sở dữ liệu
        cursor.close()
        conn.close()
# Gọi hàm để cập nhật kinh nghiệm của bác sĩ có mã là 101
update_doctor_experience(101)
Kết quả
Kết quả khi sử dụng giải pháp PostgreSQL Python sẽ giống với giải pháp MySQL Python. Kết quả có thể như sau:
Đã cập nhật kinh nghiệm của bác sĩ có mã 101 thành 15 năm.
Lưu ý rằng bạn cần phải thay đổi thông tin kết nối cơ sở dữ liệu PostgreSQL (host, user, password, database) để phù hợp với cơ sở dữ liệu của bạn.
SQLite Python
Bước 1: Kết nối cơ sở dữ liệu SQLite
Trong trường hợp sử dụng SQLite, mình không cần kết nối đến một máy chủ cơ sở dữ liệu. Mình chỉ cần mở hoặc tạo file SQLite.
import sqlite3
# Tạo hoặc kết nối tới file SQLite của bạn
db_connection = sqlite3.connect("your_database.db")
# Tạo đối tượng cursor để thực hiện truy vấn
cursor = db_connection.cursor()
Bước 2: Xác định truy vấn SQL để cập nhật kinh nghiệm
Mình cũng xác định truy vấn SQL tương tự như trong hai giải pháp trước để cập nhật kinh nghiệm của một bác sĩ nhất định trong nhiều năm.
def update_doctor_experience(doctor_id):
    try:
        # Xác định ngày gia nhập của bác sĩ
        join_date_query = "SELECT join_date FROM doctors WHERE doctor_id = ?"
        cursor.execute(join_date_query, (doctor_id,))
        join_date = cursor.fetchone()[0]
        # Tính toán số năm kinh nghiệm
        current_year = datetime.date.today().year
        join_year = join_date.year
        experience_years = current_year - join_year
        # Truy vấn SQL để cập nhật kinh nghiệm
        update_query = "UPDATE doctors SET experience = ? WHERE doctor_id = ?"
        cursor.execute(update_query, (experience_years, doctor_id))
        db_connection.commit()
        print(f"Đã cập nhật kinh nghiệm của bác sĩ có mã {doctor_id} thành {experience_years} năm.")
    except sqlite3.Error as err:
        print(f"Lỗi SQLite: {err}")
    finally:
        # Đóng kết nối đến cơ sở dữ liệu
        cursor.close()
        db_connection.close()
# Gọi hàm để cập nhật kinh nghiệm của bác sĩ có mã là 101
update_doctor_experience(101)
Kết quả
Kết quả khi sử dụng giải pháp SQLite Python sẽ giống với hai giải pháp trước. Kết quả có thể như sau:
Đã cập nhật kinh nghiệm của bác sĩ có mã 101 thành 15 năm.
Lưu ý rằng bạn cần phải thay đổi tên file SQLite (your_database.db) để phù hợp với file cơ sở dữ liệu SQLite của bạn.
Kết bài
Trong bài viết này, mình đã tìm hiểu cách cập nhật kinh nghiệm của một bác sĩ trong nhiều năm dựa trên ngày gia nhập của họ. Mình đã triển khai chức năng này bằng cách sử dụng ba giải pháp khác nhau: MySQL Python, PostgreSQL Python và SQLite Python. Quy trình chung bao gồm kết nối đến cơ sở dữ liệu, tính toán số năm kinh nghiệm, thực hiện truy vấn cập nhật và lưu thay đổi. Chọn giải pháp phù hợp với cơ sở dữ liệu của bạn và triển khai chức năng tương tự.
        
    
Bài giải
-------------------- ######## --------------------
Câu hỏi thường gặp liên quan:
- Kết nối và in phiên bản cơ sở dữ liệu trong Python
 - Lấy thông tin bệnh viện, bác sĩ bằng Id bệnh viện và Id bác sĩ bằng Python
 - Lấy danh sách bác sĩ theo chuyên khoa và mức lương cho trước trong Python
 - Lấy danh sách bác sĩ của một bệnh viện nhất định trong Python
 - Cập nhật kinh nghiệm của bác sĩ trong nhiều năm bằng Python
 

            Các kiểu dữ liệu trong C ( int - float - double - char ...)        
            Thuật toán tìm ước chung lớn nhất trong C/C++        
            Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)        
            ComboBox - ListBox trong lập trình C# winforms        
            Random trong Python: Tạo số random ngẫu nhiên        
            Lệnh cin và cout trong C++        
                Cách khai báo biến trong PHP, các loại biến thường gặp            
                Download và cài đặt Vertrigo Server            
                Thẻ li trong HTML            
                Thẻ article trong HTML5            
                Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên            
                Cách dùng thẻ img trong HTML và các thuộc tính của img            
                Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng