CX Oracle是Python中使用Oracle數據庫的擴展包,是Python中使用Oracle數據庫非常重要的一個庫。CX Oracle提供了連接Oracle數據庫,執行查詢、插入、刪除、修改等操作的API。它是Python中使用Oracle數據庫的擴展包中最常用的一個,特別是在大型企業級項目中。
以下是一些關于使用CX Oracle的例子:
# 連接Oracle數據庫 import cx_Oracle dsn = cx_Oracle.makedsn('localhost', 1521, 'ORCL') conn = cx_Oracle.connect(user='username', password='password', dsn=dsn) # 執行查詢操作 cur = conn.cursor() cur.execute('SELECT * FROM employees WHERE hire_date >:1', ('01-JAN-17',)) rows = cur.fetchall() for row in rows: print(row) # 執行插入操作 cur.execute('INSERT INTO employees (employee_id, first_name, last_name) VALUES (:1, :2, :3)', (1001, 'John', 'Doe')) conn.commit() # 執行刪除操作 cur.execute('DELETE FROM employees WHERE first_name = :1', ('John',)) conn.commit() # 執行修改操作 cur.execute('UPDATE employees SET last_name = :1 WHERE first_name = :2', ('Doe Jr.', 'John')) conn.commit() cur.close() conn.close()
上述代碼演示了連接Oracle數據庫,并進行了查詢、插入、刪除、修改等操作。其中cur對象是通過conn.cursor()方法獲得的,它是一個cursor對象,用于執行查詢和其他數據庫操作。
除了上述的操作外,CX Oracle還提供了一些高級操作。例如,我們可以配置連接池來管理數據庫連接,這可以在高并發的場景下提高性能和穩定性。
# 創建連接池 import cx_Oracle import threading import queue pool = queue.Queue(maxsize=5) for i in range(5): conn = cx_Oracle.connect(user='username', password='password', dsn=cx_Oracle.makedsn('localhost', 1521, 'ORCL')) pool.put(conn) # 從連接池中獲取連接 def get_connection(): return pool.get(timeout=30) # 任務函數 def do_task(sql): conn = get_connection() cur = conn.cursor() try: cur.execute(sql) conn.commit() except Exception as e: conn.rollback() finally: cur.close() conn.close() pool.put(cx_Oracle.connect(user='username', password='password', dsn=cx_Oracle.makedsn('localhost', 1521, 'ORCL'))) # 多線程并發執行任務 threads = [] for i in range(10): t = threading.Thread(target=do_task, args=('INSERT INTO employees (employee_id, first_name, last_name) VALUES (%s, \'%s\', \'%s\')' % (i+1001, 'John', 'Doe'),)) threads.append(t) for t in threads: t.start() for t in threads: t.join()
上述代碼演示了如何使用連接池來優化并發操作,我們可以通過創建一個連接池來管理連接,在執行任務時從連接池中獲取連接。多個任務可以并行執行,完成后將連接歸還給連接池。
總之,CX Oracle是Python使用Oracle數據庫必不可少的一個庫,它提供了連接、查詢、插入、刪除、修改和連接池等高級操作,使用它可以非常方便地操作Oracle數據庫。