欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用pycharm連接讀取orcl數(shù)據(jù)庫的表的操作方法

 更新時(shí)間:2024年01月16日 14:56:11   作者:hi,斯人若彩虹  
這篇文章主要介紹了使用pycharm連接讀取orcl數(shù)據(jù)庫的表的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

背景:工作需要
需求:使用pycharm訪問遠(yuǎn)程oracle類型數(shù)據(jù)庫的表,表中包含lob字段(這也是個(gè)坑?。?/strong>

麻了,搞了一個(gè)星期,終于成功了,真可謂是每步都有坑,看的文章也有小一百篇了,我要及時(shí)把自己的踩坑路總結(jié)出來,希望對(duì)你有用喲~

一、在Pycharm中下載cx_Oracle包

如果加載不成功,使用Anaconda Prompt在自己的環(huán)境中下載
我是在Pycharm終端執(zhí)行如下代碼

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple cx_Oracle

然后開開心心運(yùn)行,本以為到這里就成功結(jié)束了

import cx_Oracle as oracle
#
def main():
    # cx_Oracle.connect("用戶名 /  密碼@ Oracle服務(wù)器IP  /  Oracle的SERVICE_NAME")
    db = oracle.connect('XXX/XXX@IP地址:端口/sid_name')#換成自己遠(yuǎn)程要連的庫
    c = db.cursor()  # 獲取cursor
    x = c.execute("select * from XXX WHERE XXX")  # 使用cursor進(jìn)行各種查詢操作
    rows = c.fetchall()
    for row in rows:
        for v in row:
            print(v)
    c.close()  # 關(guān)閉cursor
    db.close()  # 關(guān)閉連接
if __name__ == '__main__':
    main()

然而上來就是個(gè)error!
Cannot locate a 64-bit Oracle Client library: “The specified module could not be found”.
開始了漫長(zhǎng)而無頭緒的檢索和閱讀和嘗試!沒用的略過,有用的兩步如下:

二、下載orcl instantclient

鑒于我之前已經(jīng)下載并解壓好了instantclient_21_12,如沒下載請(qǐng)轉(zhuǎn)至Oracle客戶端官網(wǎng)
因?yàn)槲业膒ycharm安裝的是最新版,電腦也是最新版,無腦揀最新的上~

三、復(fù)制3個(gè)dll后綴的文件至pychrm環(huán)境安裝包的位置

以我的為例,我用的是vene環(huán)境,可以點(diǎn)文件-設(shè)置-python解釋器查看當(dāng)前使用的環(huán)境

最簡(jiǎn)單的方式,把instantclient_21_12中的這三個(gè)文件選中復(fù)制

直接在pycharm中點(diǎn)開vene/Lib/site_packages,粘貼進(jìn)來

粘貼完成后,再次運(yùn)行就成功了,不行的話重啟一下pycharm

ps:還不行的話去設(shè)置下環(huán)境變量

我的到步驟三就OK了,看自己情況
win11桌面右鍵,隨便選一個(gè)顯示設(shè)置/個(gè)性化,進(jìn)入設(shè)置彈框頁面,輸入環(huán)境進(jìn)行搜索

在用戶變量新建一個(gè)變量名為instantclient,變量值為instantclient_21_12所在路徑的東西

搞完后再次重啟pycharm試試

四、查詢表并輸出數(shù)據(jù)框形式

#運(yùn)行成功
import cx_Oracle as cx
import pandas as pd
def visitOracle(sql):
    # cx_Oracle.connect("用戶名 /  密碼@ Oracle服務(wù)器IP  /  Oracle的SERVICE_NAME")
    conn = cx.connect('XXX/XXX@IP地址:端口/sid_name')#換成自己遠(yuǎn)程要連的庫
    cursor = conn.cursor()
    cursor.execute(sql)  # 使用cursor進(jìn)行各種操作
    # 讀取字段名
    index = cursor.description
    row = list()
    for i in range(len(index)):
        row.append(index[i][0])
    # 獲取返回信息
    data = cursor.fetchall()
    result = pd.DataFrame(list(data), columns=row)
    # 關(guān)閉鏈接,釋放資源
    cursor.close()
    conn.close()
    return result
sql = "select * from XXX WHERE XXX'"
df = visitOracle(sql)
print(df)

如果是普通的表,是運(yùn)行成功的,鑒于我的表有一個(gè)字段是長(zhǎng)文本CLOB類型,所以它報(bào)錯(cuò)了
cx_Oracle.DatabaseError: DPI-1040: LOB was already closed
步驟五是我嘗試成功的解決辦法

五、查詢含有l(wèi)ob類型字段的表

5.1 在Pycharm中下載sqlalchemy包

  • 使用pip install sqlalchemy 和設(shè)置那里安裝均失敗
  • SQLAlchemy · PyPI 安裝指定版本也失敗了
  • 使用鏡像源安裝成功??!
#pip3 install flask-sqlalchemy -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install sqlalchemy -i https://pypi.tuna.tsinghua.edu.cn/simple

5.2 查詢數(shù)據(jù)庫并訪問表

#---------運(yùn)行成功
import pandas as pd
import cx_Oracle
from sqlalchemy import create_engine
# 數(shù)據(jù)庫連接信息
dsn_tns = cx_Oracle.makedsn('YOUR_HOST', 'YOUR_PORT', service_name='YOUR_SERVICE_NAME')
conn_string = f"oracle+cx_oracle://{YOUR_USERNAME}:{YOUR_PASSWORD}@{dsn_tns}"
# 創(chuàng)建數(shù)據(jù)庫引擎
engine = create_engine(conn_string)
# 構(gòu)建SQL查詢語句
query = f"select {number_column}, {clob_column} FROM {table_name} where rownum<=5"
# 使用pandas的read_sql_query方法執(zhí)行查詢并獲取結(jié)果
df = pd.read_sql_query(query, con=engine)
print(df)
# 關(guān)閉數(shù)據(jù)庫連接
engine.dispose()

或者下面的代碼,自定義一個(gè)函數(shù)的形式,實(shí)現(xiàn)多次調(diào)用。

##----運(yùn)行成功
import pandas as pd
import cx_Oracle as cx
from sqlalchemy import create_engine
def visitOracle(sql):
    # 數(shù)據(jù)庫連接信息
    dsn_tns = cx.makedsn(('YOUR_HOST', 'YOUR_PORT', service_name='YOUR_SERVICE_NAME')
    conn = f"oracle+cx_oracle://{YOUR_USERNAME}:{YOUR_PASSWORD}@{dsn_tns}"
    # 創(chuàng)建數(shù)據(jù)庫引擎
    engine = create_engine(conn)
    # 使用pandas的read_sql_query方法執(zhí)行查詢并獲取結(jié)果
    df = pd.read_sql_query(sql, con=engine)
    # 關(guān)閉數(shù)據(jù)庫連接
    engine.dispose()
    return df
##診療記錄
sql = "select {number_column}, {clob_column} FROM {table_name} where rownum<=5""
df = visitOracle(sql)
print(df)

以上兩種代碼都可以執(zhí)行成功??!

到此這篇關(guān)于使用pycharm連接讀取orcl數(shù)據(jù)庫的表的文章就介紹到這了,更多相關(guān)pycharm orcl數(shù)據(jù)庫的表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django中使用haystack+whoosh實(shí)現(xiàn)搜索功能

    Django中使用haystack+whoosh實(shí)現(xiàn)搜索功能

    這篇文章主要介紹了Django之使用haystack+whoosh實(shí)現(xiàn)搜索功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 用Python進(jìn)行行為驅(qū)動(dòng)開發(fā)的入門教程

    用Python進(jìn)行行為驅(qū)動(dòng)開發(fā)的入門教程

    這篇文章主要介紹了用Python進(jìn)行行為驅(qū)動(dòng)開發(fā)的入門教程,本文也對(duì)BDD的概念做了詳細(xì)的解釋,需要的朋友可以參考下
    2015-04-04
  • Python 中eval()函數(shù)的正確使用及其風(fēng)險(xiǎn)分析(使用示例)

    Python 中eval()函數(shù)的正確使用及其風(fēng)險(xiǎn)分析(使用示例)

    eval()是一個(gè)功能強(qiáng)大的工具,但使用時(shí)必須非常小心,了解其工作原理和潛在的風(fēng)險(xiǎn)是確保安全使用的關(guān)鍵,通過遵循上述建議,可以在享受eval()帶來的便利的同時(shí),最大限度地減少安全風(fēng)險(xiǎn),本文介紹Python 中`eval()`函數(shù)的正確使用及其風(fēng)險(xiǎn)分析,感興趣的朋友一起看看吧
    2024-07-07
  • 基于python中__add__函數(shù)的用法

    基于python中__add__函數(shù)的用法

    今天小編就為大家分享一篇基于python中__add__函數(shù)的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python如何為圖片添加水印

    Python如何為圖片添加水印

    這篇文章主要介紹了Python如何使用Python-Pillow庫給圖片添加水印的方法,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下
    2016-11-11
  • Python操作HDF5文件示例

    Python操作HDF5文件示例

    這篇文章主要為大家介紹了Python操作HDF5文件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python通過VGG16模型實(shí)現(xiàn)圖像風(fēng)格轉(zhuǎn)換操作詳解

    Python通過VGG16模型實(shí)現(xiàn)圖像風(fēng)格轉(zhuǎn)換操作詳解

    這篇文章主要介紹了Python通過VGG16模型實(shí)現(xiàn)圖像風(fēng)格轉(zhuǎn)換操作,結(jié)合實(shí)例形式詳細(xì)分析了Python使用VGG16模型實(shí)現(xiàn)圖像風(fēng)格轉(zhuǎn)換的具體原理、操作步驟與實(shí)現(xiàn)方法,需要的朋友可以參考下
    2020-01-01
  • Python中return語句用法實(shí)例分析

    Python中return語句用法實(shí)例分析

    這篇文章主要介紹了Python中return語句用法,實(shí)例分析了Python中return語句的功能、原理與使用方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • 簡(jiǎn)單了解python PEP的一些知識(shí)

    簡(jiǎn)單了解python PEP的一些知識(shí)

    這篇文章主要介紹了簡(jiǎn)單了解python PEP的一些知識(shí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python基礎(chǔ)之類方法和靜態(tài)方法

    python基礎(chǔ)之類方法和靜態(tài)方法

    這篇文章主要介紹了python類方法和靜態(tài)方法,實(shí)例分析了Python中返回一個(gè)返回值與多個(gè)返回值的方法,需要的朋友可以參考下
    2021-10-10

最新評(píng)論