python資料庫模組-Cx_Oracle
Cx_oracle 7
cx_Oracle 是一個 Python 擴充套件模組,它允許 Python 訪問 Oracle 資料庫。使用者透過呼叫 python 的 cx_oracle 函式,函式內部動態載入 Oracle Client libraries 以訪問 Oracle 資料庫。
特性:
cx_Oracle 功能的亮點是:
1. 從 PyPI 輕鬆安裝
2. 支援 Python2 和 3 以及多個 Oracle 資料庫版本(支援 Oracle 客戶端 11.2 、 12 、 18 和 19 。 Oracle 的標準跨版本互操作性,允許輕鬆升級和連線到不同的 Oracle 資料庫版本。)
3.SQL 和 PL/SQL 語句的執行
4. 廣泛的 Oracle 資料型別支援,包括大型物件( CLOB 和 BLOB )和 SQL 物件繫結
5. 連線管理,包括連線池
6.Oracle 資料庫高可用性功能
7. 充分利用 Oracle 網路服務基礎設施,包括加密網路流量和安全功能
入門
使用安裝步驟安裝 cx_Oracle :
1. 使用 pip 安裝
python -m pip install cx_Oracle --upgrade |
2. 將 Oracle 19 、 18 、 12 或 11.2 客戶端 client libraries 新增到作業系統庫搜尋路徑中,如 Windows 上的 PATH 或 Linux 上的 LD_library_path 。在 macOS 上,將檔案移動到 ~/lib 或 /usr/local/lib 。
相關下載地址:
19, 18,12.2 版本的 client libraries 能連線 Oracle Database 11.2 及以上版本。
12.2 版本的 client libraries 能連線 Oracle Database 10.2 及以上版本。
11.2 版本的 client libraries 能連線 Oracle Database 9.2 及以上版本。
建立指令碼 query.py ,如下所示:
# query.py
from __future__ import print_function import cx_Oracle
# Establish the database connection connection = cx_Oracle.connect("hr", userpwd, "dbhost.example.com/orclpdb1")
# Obtain a cursor cursor = connection.cursor()
# Data for binding managerId = 145 firstName = "Peter"
# Execute the query sql = """SELECT first_name, last_name FROM employees WHERE manager_id = :mid AND first_name = :fn""" cursor.execute(sql, mid = managerId, fn = firstName)
# Loop over the result set for row in cursor: print(row)
|
與資料庫的簡單連線需要使用者名稱、密碼和連線字串。找到您的 Oracle 資料庫使用者名稱和密碼以及資料庫連線字串,並在 query.py 中使用它們。
cursor 遊標是允許執行語句和獲取結果的物件。
:mid 及 :fn 是用到了 sql 的繫結變數,這將語句文字與資料分離,有助於避免 SQL 注入安全風險。
我們執行這個指令碼,可得:
D:\dba>python query.py ('Peter', 'cat') |
連線到 Oracle 資料庫
建立資料庫連線
使用 cx_Oracle 連線到 Oracle 資料庫有兩種方法:
獨立連線
當應用程式維護到資料庫的單個使用者會話時。連線是由 cx_Oracle.connect ()或其別名 cx_Oracle.Connection ()建立的。
池連線
當應用程式頻繁地連線和斷開與資料庫的連線時,連線池對於效能非常重要。池實現中的 Oracle 高可用性功能意味著,對於那些希望少數連線可供不經常使用的應用程式,小池也很有用。使用 cx_Oracle.SessionPool ()建立池,然後可以呼叫 SessionPool.acquire ()從池獲取連線。
示例:與 Oracle 資料庫的獨立連線
import cx_Oracle
userpwd = ". . ." # Obtain password string from a user prompt or environment variable
connection = cx_Oracle.connect("hr", userpwd, "dbhost.example.com/orclpdb1", encoding="UTF-8")
|
當呼叫 Connection.close ()不再需要連線時,應釋放連線。其中一種方法是使用“ with ”塊,它可以確保連線在塊完成後關閉。例如:
with cx_Oracle.connect(userName, password, "dbhost.example.com/orclpdb1", encoding="UTF-8") as connection: cursor = connection.cursor() cursor.execute("insert into SomeTable values (:1, :2)", (1, "Some string")) connection.commit()
|
此程式碼確保塊完成後,連線將關閉,資料庫將回收資源。此外,任何試圖在塊外使用變數連線的嘗試都將失敗。
特權連線
下面的示例演示如何以 SYSDBA 身份連線到 Oracle 資料庫:
connection = cx_Oracle.connect("sys", syspwd, "dbhost.example.com/orclpdb1", mode=cx_Oracle.SYSDBA, encoding="UTF-8")
cursor = con.cursor() sql = "GRANT SYSOPER TO hr" cursor.execute(sql) |
SQL 執行
執行 SQL 語句是 Python 應用程式與 Oracle 資料庫通訊的主要方式。語句使用 Cursor.execute ()或 Cursor.executemany ()方法執行。語句包括查詢、資料操作語言( DML )和資料定義語言( DDL )。還可以執行其他一些特殊語句。
cx_Oracle 可用於執行單個語句,一次執行一個,不支援 sql 檔案,如果需要的話,官方提供一個執行 sql 檔案的函式,可以呼叫該函式實現執行 sql 檔案的需求。
SQL 語句不應包含尾隨分號(“;”)或正斜槓(“ / ”)
cur.execute("select * from MyTable") |
SQL 查詢
查詢(以 SELECT 或 with 開頭的語句)只能使用 Cursor.execute ()方法執行。然後可以迭代行,或者使用 Cursor.fetchone ()、 Cursor.fetchmany ()或 Cursor.fetchall ()方法之一獲取行。
Fetch Methods
cur = connection.cursor() cur.execute("select * from MyTable") while True: row = cur.fetchone() if row is None: break print(row)
|
cur = connection.cursor() cur.execute("select * from MyTable") numRows = 10 while True: rows = cur.fetchmany(numRows) if not rows: break for row in rows: print(row)
|
cur.fetchall()
cur = connection.cursor() cur.execute("select * from MyTable") rows = cur.fetchall() for row in rows: print(row)
|
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69993859/viewspace-2752596/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python安裝cx_Oracle模組遇到的問題PythonOracle
- python使用cx_Oracle連線oracle資料庫獲取常用資訊PythonOracle資料庫
- Python資料庫模組(sqlite3,SQLite3)Python資料庫SQLite
- django哪個模組配置資料庫Django資料庫
- Python模擬資料生成庫FakerPython
- Python資料視覺化---pygal模組Python視覺化
- springboot建立與資料庫關聯模組Spring Boot資料庫
- 營銷模組資料庫表解析(二)資料庫
- Python全棧MongoDB資料庫(聚合、二進位制、GridFS、pymongo模組)Python全棧MongoDB資料庫
- CX_ORACLE 庫使用Oracle
- Python原生資料結構增強模組collectionsPython資料結構
- python 模組:itsdangerous 模組Python
- Python模組:time模組Python
- python標準庫模組放在哪裡?Python
- QT繪圖模組與資料庫的結合QT繪圖資料庫
- Python模組之urllib模組Python
- python模組之collections模組Python
- python 使用 random模組生成隨機測試資料Pythonrandom隨機
- Python中常用的資料分析工具(模組)有哪些?Python
- python常用標準庫(os系統模組、shutil檔案操作模組)Python
- Python資料分析 Pandas模組 基礎資料結構與簡介Python資料結構
- Python 模組Python
- 資料分析---matplotlib模組
- 資料分析---pandas模組
- 營銷模組資料庫表解析:優惠券功能資料庫
- [Python模組學習] glob模組Python
- faker生成器生成虛擬資料的Python模組Python
- Python開發常用的庫及模組!Python學習教程Python
- Python培訓分享:Python中常用的資料分析工具(模組)有哪些?Python
- Python中模組是什麼?Python有哪些模組?Python
- Tensorflow的資料輸入模組tf.data模組
- Python Execl模組Python
- Python mongoHelper模組PythonGo
- Python——JSON 模組PythonJSON
- [Python] pipe模組Python
- Python - 模組包Python
- python——typing模組Python
- Python functools 模組Python