Đô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.
Nội dung chính
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:
- Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
- Ebook về python tại đây.
- Các series tự học lập trình khác
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!