亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python連接Oracle的多種方式小結(jié)

 更新時間:2024年08月13日 09:52:42   作者:碼農(nóng)研究僧  
Oracle數(shù)據(jù)庫是一種強(qiáng)大的企業(yè)級關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),而Python是一門流行的編程語言,兩者的結(jié)合可以提供出色的數(shù)據(jù)管理和分析能力,本教程將詳細(xì)介紹如何在Python中連接Oracle數(shù)據(jù)庫,需要的朋友可以參考下

前言

庫/包描述優(yōu)點(diǎn)缺點(diǎn)使用場景
oracledbOracle 官方 Python 客戶端庫。 - 官方支持
  • 直接與 Oracle 數(shù)據(jù)庫交互
  • 配置靈活 - 配置可能較為復(fù)雜
  • 主要用于直接數(shù)據(jù)庫操作,不支持 ORM 需要直接與 Oracle 數(shù)據(jù)庫交互的場景
    cx_Oracle Oracle 官方 Python 客戶端庫。 - 官方支持
  • 功能全面
  • 適用于多種 Oracle 數(shù)據(jù)庫操作 - 安裝和配置較復(fù)雜
  • 需要手動管理連接和資源 直接數(shù)據(jù)庫操作,支持復(fù)雜查詢
    SQLAlchemy 通用的 SQL 工具包和 ORM,支持多種數(shù)據(jù)庫,包括 Oracle。 - 支持多種數(shù)據(jù)庫
  • 提供 ORM 功能,簡化數(shù)據(jù)庫操作
  • 統(tǒng)一接口 - 學(xué)習(xí)曲線陡峭
  • 對于簡單操作可能過于復(fù)雜 需要 ORM 支持或跨數(shù)據(jù)庫操作場景

1. SQLAlchemy

推薦使用這個包,寫的比較詳細(xì):Python中SQLAlchemy庫的使用方法分析_python_腳本之家 (jb51.net)

2. oracledb

官方提供的 Python 客戶端庫,用于連接和操作 Oracle 數(shù)據(jù)庫

是 cx_Oracle 的繼任者,并在很多方面進(jìn)行了改進(jìn)和優(yōu)化

  • 安裝與配置pip install oracledb

  • Oracle 客戶端:需要 Oracle Instant Client
    安裝路徑需要在系統(tǒng)環(huán)境變量中配置,或者在代碼中指定路徑

import oracledb
oracledb.init_oracle_client(lib_dir=r"D:\instantclient_21_10")
  • 連接數(shù)據(jù)庫
    連接字符串(DSN):可以使用 DESCRIPTION 或 TNS 配置字符串。支持直接的 IP 地址和端口,或使用 TNS 名稱
connection = oracledb.connect(user='username', password='password', dsn=dsn)
  • 執(zhí)行 SQL 查詢
    使用 cursor 對象來執(zhí)行 SQL 語句
cursor = connection.cursor()
cursor.execute("SELECT * FROM my_table")
results = cursor.fetchall()
  • 事務(wù)管理
    提交事務(wù):需要顯式地調(diào)用 commit(),connection.commit()回滾事務(wù):需要顯式地調(diào)用 rollback(),connection.rollback()錯誤處理:通過捕獲異常來處理數(shù)據(jù)庫操作中的錯誤
try:
    # 執(zhí)行操作
    pass
except oracledb.DatabaseError as e:
    print(e)
  • 游標(biāo)與連接管理
    關(guān)閉游標(biāo)和連接:在完成數(shù)據(jù)庫操作后,需要關(guān)閉游標(biāo)和連接以釋放資源
cursor.close()
connection.close()

最終的測試Demo如下:

import oracledb

# 數(shù)據(jù)庫連接信息
dsn = (
    "(DESCRIPTION="
    "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.197.0.200)(PORT=1521)))"
    "(CONNECT_DATA=(SERVICE_NAME=prod)))"
)
username = 'root'
password = 'root'
oracledb.init_oracle_client(lib_dir=r"D:\instantclient_21_10")
# 創(chuàng)建連接
connection = oracledb.connect(user=username, password=password, dsn=dsn)

try:
    # 創(chuàng)建一個游標(biāo)
    cursor = connection.cursor()

    # SQL 查詢語句
    sql_query = """
	sql語句
    """

    # 執(zhí)行查詢
    cursor.execute(sql_query)

    # 獲取所有結(jié)果
    results = cursor.fetchall()

    # 打印結(jié)果
    for row in results:
        print(row)
except Exception as e:
    print(e)

finally:
    # 關(guān)閉游標(biāo)和連接
    cursor.close()
    connection.close()

3. cx_Oracle

Python 中連接 Oracle 數(shù)據(jù)庫的官方庫

支持多種 Oracle 數(shù)據(jù)庫功能,并且是 Oracle 官方推薦的客戶端庫之一

和上面同理,配置一個客戶端,講講差異之處

特性優(yōu)點(diǎn)缺點(diǎn)
性能高性能,支持大數(shù)據(jù)量處理和高并發(fā)操作-
功能支持復(fù)雜的數(shù)據(jù)庫功能,如綁定變量、批量操作、PL/SQL 存儲過程-
官方支持由 Oracle 官方提供和維護(hù),確保兼容性和穩(wěn)定性-
配置復(fù)雜性-配置 Oracle 客戶端和庫可能較為復(fù)雜
庫更新頻率-版本更新可能較慢,需關(guān)注新版本的兼容性
資源管理-需要手動管理連接和游標(biāo),資源管理較為繁瑣
多線程支持具有良好的多線程支持,可以在多線程環(huán)境下高效運(yùn)行-

最終的測試Demo如下:

import cx_Oracle

# 設(shè)置 Oracle 客戶端庫路徑
cx_Oracle.init_oracle_client(lib_dir=r"D:\instantclient_21_10")

# 連接數(shù)據(jù)庫
dsn = cx_Oracle.makedsn('10.197.0.200', 1521, service_name='prod')
connection = cx_Oracle.connect(user='root', password='root', dsn=dsn)

# 執(zhí)行查詢
cursor = connection.cursor()
query = """
sql語句
"""
cursor.execute(query)
results = cursor.fetchall()

# 打印結(jié)果
for row in results:
    print(row)

# 關(guān)閉游標(biāo)和連接
cursor.close()
connection.close()

到此這篇關(guān)于Python連接Oracle的多種方式小結(jié)的文章就介紹到這了,更多相關(guān)Python連接Oracle內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論