設為首頁收藏本站

艾歐踢論壇

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 活動 交友 discuz
查看: 305|回復: 0
打印 上一主題 下一主題

The python-oracledb and cx_Oracle Drivers

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2023-4-24 11:18:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
cx_ Oracle庫的最新版本已經升級為python -oracledb了;
By default, python-oracledb runs in a ‘Thin’ mode which connects directly to Oracle Database. This mode does not need Oracle Client libraries. However, some additional functionality is available when python-oracledb uses them. Python-oracledb is said to be in ‘Thick’ mode when Oracle Client libraries are used.
see 23. Appendix A: Oracle Database Features Supported by python-oracledb — python-oracledb 1.3.1 documentation
python-oracledb驅動程序是一個Python擴展模塊,可以訪問Oracle數據庫。它具有支持Python數據庫API v2.0規範的全面功能,具有相當多的附加內容和一些排除項。

python-oracledb驅動程序是cx_Oracle 8.3的重命名的主要版本繼承者.

python-oracledb功能亮點:
1)從PyPI 輕鬆安裝
2)支持多個Oracle 數據庫版本;支持Python 數據庫API v2.0 規範執行SQL 和PL/SQL 語句
3)廣泛的Oracle 數據類型支持,包括JSON 、大型對象( 和) 和SQL 對象的綁定CLOBBLOB連接管理,包括連接池Oracle 數據庫高可用性功能
4)充分利用Oracle 網絡服務基礎架構,包括加密的網絡流量

python-oracledb 與cx_Oracle 使用方法對比
cx_Oracle使用方法
  1. import cx_Oracle# 设置连接参数
複製代碼

python-oracledb的使用方法
默認情況下,python-oracledb在“精簡”模式下運行,該模式直接連接到Oracle數據庫。此模式不需要Oracle 客戶端庫。
但是,當python-oracledb使用它們時,可以使用一些其他功能。
Python-oracledb在使用Oracle客戶端庫時被稱為“Thick”模式。
這兩種模式都具有支持Python 數據庫API v2.0 規範的全面功能。

從默認的精簡模式更改為Thick模式需要添加對oracledb.init_oracle_client() 的調用;
當調用init_oracle_client() 時,python-oracledb 使用搜索啟發式方式動態加載Oracle Client 庫,使用方法:
  1.   import oracledb
複製代碼

獨立鏈接模式
  1. import oracledbimport getpassuserpwd = getpass.getpass("Enter password: ")connection = oracledb.connect(user="hr", password=userpwd, dsn="dbhost.example.com/orclpdb")# 其他功能代码# 关闭连接connection.close()
複製代碼

或者可以使用以下方法:
  1. username="hr"userpwd = os.environ.get("PYTHON_PASSWORD")host = "localhost"port = 1521service_name = "orclpdb"dsn = f'{username}/{userpwd}@{port}:{host}/{service_name}'connection = oracledb.connect(dsn)# 其他功能代码# 关闭连接connection.close()
複製代碼

使用連接池的方法
  1. # 初始化连接pool = oracledb.create_pool(user="hr", password=userpwd, dsn="dbhost.example.com/orclpdb", min=2, max=5, increment=1)# Acquire 连接到池connection = pool.acquire()# 使用连接池with connection.cursor() as cursor: for result in cursor.execute("select * from mytab"): print(result)# 释放连接池pool.release(connection)# 关闭连接池pool.close()
複製代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 轉播轉播 分享分享 分享淘帖
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|Archiver|手機版|艾歐踢創新工坊    

GMT+8, 2024-5-16 17:02 , Processed in 0.200372 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表