最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

庫/包描述優(yōu)點缺點使用場景
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

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

2. oracledb

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

是 cx_Oracle 的繼任者,并在很多方面進行了改進和優(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)
  • 游標與連接管理
    關(guān)閉游標和連接:在完成數(shù)據(jù)庫操作后,需要關(guān)閉游標和連接以釋放資源
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)建一個游標
    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)閉游標和連接
    cursor.close()
    connection.close()

3. cx_Oracle

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

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

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

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

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

相關(guān)文章

  • Python簡繁體轉(zhuǎn)換的簡單實現(xiàn)步驟

    Python簡繁體轉(zhuǎn)換的簡單實現(xiàn)步驟

    工作中需要將繁體中文轉(zhuǎn)換成簡體中文上網(wǎng)找了些資料,下面這篇文章主要給大家介紹了關(guān)于Python實現(xiàn)簡繁體轉(zhuǎn)換的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • Python中super().__init__()測試以及理解

    Python中super().__init__()測試以及理解

    __init__()一般用來創(chuàng)建對象的實例變量,或一次性操作,super()用于調(diào)用父類的方法,可用來解決多重繼承問題,下面這篇文章主要給大家介紹了關(guān)于Python中super().__init__()測試及理解的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • Python使用SQLAlchemy ORM實現(xiàn)數(shù)據(jù)庫操作指南

    Python使用SQLAlchemy ORM實現(xiàn)數(shù)據(jù)庫操作指南

    SQLAlchemy是Python中最流行的ORM(對象關(guān)系映射)框架之一,它提供了高效且靈活的數(shù)據(jù)庫操作方式,本文將介紹如何使用SQLAlchemy ORM進行數(shù)據(jù)庫操作,感興趣的小伙伴可以了解下
    2026-01-01
  • 詳解Python中contextlib上下文管理模塊的用法

    詳解Python中contextlib上下文管理模塊的用法

    Python中一些內(nèi)建對象有了上下文管理器的支持,于是可以使用with語句來實現(xiàn)自動的文件打開關(guān)閉以及線程操作等,這里我們就從根基上來詳解Python中contextlib上下文管理模塊的用法
    2016-06-06
  • python TK庫簡單應(yīng)用(實時顯示子進程輸出)

    python TK庫簡單應(yīng)用(實時顯示子進程輸出)

    這篇文章主要介紹了python TK庫簡單應(yīng)用(實時顯示子進程輸出),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python中對布爾值True進行取反的操作指南

    Python中對布爾值True進行取反的操作指南

    本文介紹了在Python中取反布爾值True的方法,推薦使用not運算符,還介紹了其他方法如異或運算符^、條件表達式等,同時指出了not和~的區(qū)別,并強調(diào)了not的高效性和符合Python習(xí)慣的特點,需要的朋友可以參考下
    2026-04-04
  • Python實現(xiàn)簡單求解給定整數(shù)的質(zhì)因數(shù)算法示例

    Python實現(xiàn)簡單求解給定整數(shù)的質(zhì)因數(shù)算法示例

    這篇文章主要介紹了Python實現(xiàn)簡單求解給定整數(shù)的質(zhì)因數(shù)算法,結(jié)合實例形式分析了Python正整數(shù)分解質(zhì)因數(shù)的相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • python2 與 pyhton3的輸入語句寫法小結(jié)

    python2 與 pyhton3的輸入語句寫法小結(jié)

    這篇文章主要給大家介紹了關(guān)于python2 與 pyhton3的輸入語句寫法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Python之重導(dǎo)出機制的實現(xiàn)示例

    Python之重導(dǎo)出機制的實現(xiàn)示例

    重導(dǎo)出不是Python的保留關(guān)鍵字,也不是新的語法結(jié)構(gòu),而是一種利用?import?語義實現(xiàn)的設(shè)計模式,下面就來詳細的介紹一下Python之重導(dǎo)出機制的實現(xiàn)示例,感興趣的可以了解一下
    2026-05-05
  • python中單雙下劃線的區(qū)別對比分析

    python中單雙下劃線的區(qū)別對比分析

    Python中存在一些特殊的方法,有些方法以雙下劃線 “__” 開頭和結(jié)尾,它們是Python的魔法函數(shù),比如__init__()和__str__等等,不用要這種方式命名自己的變量或者函數(shù),這篇文章主要介紹了python里面單雙下劃線的區(qū)別,需要的朋友可以參考下
    2023-04-04

最新評論

科技| 常山县| 城固县| 梨树县| 上饶县| 洮南市| 洛浦县| 益阳市| 庆云县| 彩票| 淮滨县| 留坝县| 视频| 黔江区| 渭南市| 广水市| 延津县| 蒙阴县| 揭西县| 隆安县| 远安县| 建瓯市| 新乡市| 大宁县| 乐东| 桑日县| 衡阳市| 大庆市| 龙胜| 东源县| 洮南市| 潞西市| 青阳县| 宽甸| 恩平市| 邯郸市| 石首市| 沙湾县| 长宁县| 宜兰县| 尼木县|