Đôi khi, như là một phần của công việc lập trình, chúng ta phải làm việc với cơ sở dữ liệu, bởi vì chúng ta muốn lưu trữ được một lượng thông tin khổng lồ bên trong ứng dụng của mình, do đó chúng ta cần tới các cơ sở dữ liệu, chẳng hạn như Oracle, MySQL, v.v… Vì vậy, trong bài này, chúng ta sẽ tìm hiểu về việc kết nối tới cơ sở dữ liệu Oracle bằng Python. Điều này có thể được thực hiện nhờ sự hỗ trợ của một mudule có tên là cx_Oracle.

1. Cơ sở dữ liệu Oracle

Để chương trình Python có thể giao tiếp với bất kỳ cơ sở dữ liệu nào, chúng ta cần tới một connector (trình kết nối), chính là module cx_Oracle.

Để cài đặt cx_Oracle, chúng ta sử dụng câu lệnh sau:

pip install cx_Oracle

Với câu lệnh này, bạn có thể cài đặt gói cx_Oracle nhưng nó đòi hỏi trước đó bạn đã cài đặt cơ sở dữ liệu Oracle bên trong PC của mình.

2. Cách sử dụng module cx_Oracle để kết nối

1. Nạp module cơ sở dữ liệu cụ thể vào chương trình

– Ví dụ: import cx_Oracle

2. connect(): Tiếp theo, thiết lập một kết nối giữa chương trình Python và cơ sở dữ liệu Oracle bằng cách sử dụng hàm connect().

con = cx_Oracle.connect(‘username/password@localhost’)

3. cursor(): Để thực thi truy vấn sql và lấy được kết quả, ta cần tới đối tượng cursor():

cursor = cx_Oracle.cursor()

4. execute():

cursor.execute(sqlquery) => Để thực thi một câu truy vấn đơn lẻ

cursor.execute(sqlqueries) => Để thực thi một nhóm gồm nhiều câu truy vấn sql được phân cách với nhau bởi dấu “;”

5. commit(): Đối với các truy vấn trong DML (Data Manipulate Languate – Ngôn ngữ thao tác dữ liệu), bạn có thể thực hiện các phép update, insert, delete. Tiếp theo bạn cần phải gọi đến phương thức commit(), chỉ khi đó thì các thay đổi mà bạn đã thực hiện mới được phản ánh trong cơ sở dữ liệu.

6. fetch(): Hàm này lấy về hàng tiếp theo của một tập kết quả truy vấn, và trả về một chuỗi đơn lẻ (single sequence), hoặc trả về None nếu không có hàng nào khả dụng.

7. close(): Sau khi đã thực hiện xong tất cả các thao tác với cơ sở dữ liệu, bạn cần đóng lại kết nối tới cơ sở dữ liệu.

cursor.close()

con.close()

– Đoạn code ví dụ tạo ra một bảng dữ liệu:

# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------

# importing module 
import cx_Oracle  
  
  
# Create a table in Oracle database 
try: 
  
    con = cx_Oracle.connect('scott/tiger@localhost') 
      
    # Now execute the sqlquery 
    cursor = con.cursor() 
      
    # Creating a table srollno heading which is number 
    cursor.execute("create table student(srollno number, \ 
                    name varchar2(10), efees number(10, 2)") 
                      
    print("Table Created successful") 
      
except cx_Oracle.DatabaseError as e: 
    print("There is a problem with Oracle", e) 
  
# by writing finally if any error occurs 
# then also we can close the all database operation 
finally: 
    if cursor: 
        cursor.close() 
    if con: 
        con.close() 

– Kết quả in ra là:

Table Created successful

– Đoạn code ví dụ thêm dữ liệu vào bảng:

# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------

brightness_4
# Program to create a table in Oracle database 
import cx_Oracle 
  
try: 
  
    con = cx_Oracle.connect('scott/tiger@localhost') 
      
    # Now execute the sqlquery 
    cursor = con.cursor() 
    cursor.execute("insert into student values(19585, Niranjan Shukla, 72000") 
      
    # commit that insert the provided data 
    con.commit() 
      
    print("value inserted successful") 
  
except cx_Oracle.DatabaseError as e: 
    print("There is a problem with Oracle", e) 
  
# by writing finally if any error occurs 
# then also we can close the all database operation 
finally: 
    if cursor: 
        cursor.close() 
    if con: 
        con.close() 

– Kết quả in ra là:

value inserted successful

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!