Hướng dẫn python oracle database connection - Kết nối cơ sở dữ liệu python oracle

Oracle Database là 1 trong những hệ quản trị CSDL nổi tiếng, được vận hành trong những sản phẩm, dịch vụ doanh nghiệp lớn. Bài viết này sẽ hướng dẫn các bạn kết nối tới Oracle Database bằng Python 3 sử dụng thư viện cx_Oracle

Các bài viết nên tham khảo trước:

  • Hướng dẫn cài đặt Oracle Database 12c trên Windows
  • Python là gì? Hướng dẫn viết chương trình sử dụng Python
  • Hướng dẫn sử dụng pip để cài đặt và quản lý Module của Python

Cài đặt thư viện cx_Oracle

Để kết nối tới Oracle Database, python 3 sử dụng thư viện có tên là cx_Oracle, các bạn có thể tham khảo tài liệu về cx_Oracle tại đây.

Sử dụng lệnh pip3 để cài đặt cx_Oracle

pip3 install cx_Oracle

Cài đặt Oracle Instant Client (Trên Linux)

Để sử dụng cx_oracle cần cài đặt Oracle Instant Client, download Oracle Instant Client bản 64bit hoặc 32bit.

Sau đó unzip nó tới thư mục /opt/oracle

mkdir -p /opt/oracle
cd /opt/oracle
unzip instantclient-basic-linux.x64-19.3.0.0.0dbru.zip

Cài đặt package libaio

# CentOS / RHEL / Fedora
sudo yum install libaio

# Ubuntu / Debian / LinuxMint
sudo apt-get install libaio1

Để cập nhật shared libraries của Oracle thực hiện command sau:

sudo sh -c "echo /opt/oracle/instantclient_19_3 > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig

Hoặc set biến môi trường LD_LIBRARY_PATHLD_LIBRARY_PATH

export LD_LIBRARY_PATH=/opt/oracle/instantclient_19_3:$LD_LIBRARY_PATH

Kết nối tới Oracle Database với Python 3

Tạo file oracle-connect.py với nội dung như sau:

#!/usr/bin/env python3
import cx_Oracle

conn = cx_Oracle.connect('sys', '123456', 'localhost/orcl', cx_Oracle.SYSDBA)

print(conn.version)

conn.close()

Với:

  • sys là username
  • 123456 là mật khẩu của sys
  • localhost là hostname của máy chủ cài đặt Oracle, có thể sử dụng dịa chỉ IP
  • cx_Oracle.SYSDBA là bạn đang login bằng “sys as SYSDBA”

Kết quả chúng ta đã kết nối Oracle Database thành công

Hướng dẫn python oracle database connection - Kết nối cơ sở dữ liệu python oracle

Nguồn: vinasupport.com

Đô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.

Để 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: 
#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: 
#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

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

  • w3school
  • python.org
  • Nguồn và Tài liệu tiếng anh tham khảo:

geeksforgeeks

  • 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

  • Group Facebook
  • Fanpage
  • Youtube
  • Instagram
  • Twitter
  • Linkedin
  • Pinterest
  • Trang chủ

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!