簡體   English   中英

如何使用 cx_Oracle 在 python 多處理代碼中創建連接(或會話)池以連接到 Oracle 數據庫?

[英]How to create a connection (or session) pool in python multiprocessing code using cx_Oracle to connect to a Oracle database?

我有一個非常冗長的multiprocessing python code ,其中涉及在運行期間多次與Oracle database交互。 該代碼應該是一個獨立的應用程序,它將 24*7 運行並從數據庫中獲取數據,使用多處理執行它,將結果寫回數據庫,然后再次輪詢數據庫以獲取新數據並不斷重復此循環。 如何創建connection pool (or session pool ,不知道 python 和編碼中的 2、new 的區別)來提高代碼的性能? 需要使用cx_oracle連接到 Oracle db。 任何幫助將不勝感激。 提前謝謝了!!

如何創建連接池(或session池,不知道2、新在python和編碼之間的區別)來提高代碼的性能?

cx_Oracle connection pool的每個連接對應一個Oracle session

當應用程序頻繁地連接和斷開數據庫時,連接池將提高性能。 cx_Oracle連接池允許應用程序創建和維護與數據庫的連接池。 使用cx_Oracle.SessionPool()創建池,然后可以調用SessionPool.acquire()以從池中獲取連接。 初始池大小和最大池大小在創建池時提供。 當池需要增長時,會自動創建新連接。 當連接不再使用時,池可以縮小到最小大小。 當不再需要從池中獲取的連接時,應使用SessionPool.release()Connection.close()將它們釋放回池。 否則,當所有引用連接 go 的變量都從 scope 中釋放出來時,它們將自動釋放回池中。 session 池可以使用SessionPool.close()完全關閉。

下面的示例顯示了如何使用連接池連接到 Oracle 數據庫:

# Create the session pool
pool = cx_Oracle.SessionPool("hr", userpwd,
        "dbhost.example.com/orclpdb1", min=2, max=5, increment=1, encoding="UTF-8")

# Acquire a connection from the pool
connection = pool.acquire()

# Use the pooled connection
cursor = connection.cursor()
for result in cursor.execute("select * from mytab"):
    print(result)

# Release the connection to the pool
pool.release(connection)

# Close the pool
pool.close()

閱讀有關連接池的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM