国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價值的文章主要介紹了使用pycharm連接讀取orcl數(shù)據(jù)庫的表。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

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

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

一、在Pycharm中下載cx_Oracle包

下載安裝免費的Pycharm社區(qū)版參見pycharm Mac/windows(2022-2)之下載安裝和設(shè)置中文
如果加載不成功,使用Anaconda Prompt在自己的環(huán)境中下載
我是在Pycharm終端執(zhí)行如下代碼

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

然后開開心心運行,本以為到這里就成功結(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()

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

二、下載orcl instantclient

鑒于我之前已經(jīng)下載并解壓好了instantclient_21_12,如沒下載請轉(zhuǎn)至Oracle客戶端官網(wǎng)
因為我的pycharm安裝的是最新版,電腦也是最新版,無腦揀最新的上~
使用pycharm連接讀取orcl數(shù)據(jù)庫的表,pycharm,oracle,python

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

以我的為例,我用的是vene環(huán)境,可以點文件-設(shè)置-python解釋器查看當(dāng)前使用的環(huán)境
使用pycharm連接讀取orcl數(shù)據(jù)庫的表,pycharm,oracle,python
最簡單的方式,把instantclient_21_12中的這三個文件選中復(fù)制
使用pycharm連接讀取orcl數(shù)據(jù)庫的表,pycharm,oracle,python
直接在pycharm中點開vene/Lib/site_packages,粘貼進(jìn)來
使用pycharm連接讀取orcl數(shù)據(jù)庫的表,pycharm,oracle,python
粘貼完成后,再次運行就成功了,不行的話重啟一下pycharm
使用pycharm連接讀取orcl數(shù)據(jù)庫的表,pycharm,oracle,python

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

我的到步驟三就OK了,看自己情況
win11桌面右鍵,隨便選一個顯示設(shè)置/個性化,進(jìn)入設(shè)置彈框頁面,輸入環(huán)境進(jìn)行搜索
使用pycharm連接讀取orcl數(shù)據(jù)庫的表,pycharm,oracle,python
在用戶變量新建一個變量名為instantclient,變量值為instantclient_21_12所在路徑的東西
使用pycharm連接讀取orcl數(shù)據(jù)庫的表,pycharm,oracle,python
搞完后再次重啟pycharm試試

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

#運行成功
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)

如果是普通的表,是運行成功的,鑒于我的表有一個字段是長文本CLOB類型,所以它報錯了
cx_Oracle.DatabaseError: DPI-1040: LOB was already closed
步驟五是我嘗試成功的解決辦法

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

5.1 在Pycharm中下載sqlalchemy包

  • 使用pip install sqlalchemy 和設(shè)置那里安裝均失敗
  • SQLAlchemy · PyPI 安裝指定版本也失敗了
  • 使用鏡像源安裝成功?。?/li>
#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ù)庫并訪問表

5.2.1 列表形式輸出

輸出為外層列表,內(nèi)里是元組的形式
[(number_value1,clob_value1),(number_value2,clob_value2),(number_value2,clob_value2)]

import cx_Oracle
# 連接到Oracle數(shù)據(jù)庫
dsn = cx_Oracle.makedsn('YOUR_HOST', 'YOUR_PORT', service_name='YOUR_SERVICE_NAME')
conn = cx_Oracle.connect(user='YOUR_USERNAME', password='YOUR_PASSWORD', dsn=dsn)
# 查詢SQL
query = "select {number_column}, {clob_column} FROM {table_name} where rownum<=5"
# 執(zhí)行查詢
cursor = conn.cursor()
cursor.execute(query)
# 獲取所有行
rows = cursor.fetchall()
print(rows)
#獲取所有行也可以換成如下,輸出結(jié)果是一樣的
for row in cursor:
    print(row)

5.2.2 數(shù)據(jù)框形式輸出

#---------運行成功
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()

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

##----運行成功
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í)行成功!!文章來源地址http://www.zghlxwxcb.cn/news/detail-813756.html

到了這里,關(guān)于使用pycharm連接讀取orcl數(shù)據(jù)庫的表的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 關(guān)于運用pycharm與數(shù)據(jù)庫連接與實際操作

    關(guān)于運用pycharm與數(shù)據(jù)庫連接與實際操作

    ? ? ?數(shù)據(jù)庫通常需要與編譯軟件相連接,本文主要介紹關(guān)于python 編譯器pycharm與數(shù)據(jù)庫連接的過程。 首先,pycharm需要一些基礎(chǔ)的配置。 個人建議配置:終端---pip install pymysql? ? ? ? 插件----DB Navigator 具體操作如下: 首先打開pycharm并新建項目 ?新建完成后,打開終端(右下

    2024年02月13日
    瀏覽(21)
  • c# 從零到精通 讀取連接數(shù)據(jù)庫-并將數(shù)據(jù)填入dataGridView控件中

    c# 從零到精通 讀取連接數(shù)據(jù)庫-并將數(shù)據(jù)填入dataGridView控件中 using System; using System.Data; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace Test01 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { SqlConnection conn

    2024年02月09日
    瀏覽(29)
  • unity存儲信息的方式,保存讀取背包、游戲進(jìn)度,連接MySQL數(shù)據(jù)庫

    為了在Unity中存儲信息,有幾種方法可供選擇。最常見的方法是 PlayerPrefs、Serialization和Database 。 PlayerPrefs是一種簡單的存儲小量數(shù)據(jù)(如玩家偏好或游戲設(shè)置)的方法。它易于使用,不需要任何外部庫。但是,不建議用于存儲大量數(shù)據(jù)或敏感信息。 Serialization是另一種在Unit

    2024年02月09日
    瀏覽(28)
  • 【PostgreSql】只刪除整個數(shù)據(jù)庫的表(不刪除數(shù)據(jù)庫)

    環(huán)境: windows 數(shù)據(jù)庫: postgresql 前提: 此方法用來刪除數(shù)據(jù)庫所有的表,不包括保存的函數(shù)語句、查詢語句等(可適用于需要刪除整個數(shù)據(jù)庫的數(shù)據(jù)卻又不想刪除數(shù)據(jù)庫或者數(shù)據(jù)庫正在連接無法被刪除的情況) 查詢數(shù)據(jù)庫所有的表(假設(shè)表都在public模式下) 這個語句會列出

    2024年04月12日
    瀏覽(27)
  • 數(shù)據(jù)庫的表和屬性

    目錄 1.元組 2.碼 3.主碼-主鍵 4.外碼-外鍵 5.主鍵和外鍵的區(qū)別 6.數(shù)據(jù)庫的存儲過程 7.SQL的分類 8.數(shù)據(jù)庫設(shè)計:ER圖 概念:數(shù)據(jù)庫中,每個表的每一行就是一個元組,表的每一列就是一個屬性 即表中的列,唯一標(biāo)識實體的屬性 一個表中只能有一個主碼 表中的一個屬性是另一個

    2024年02月12日
    瀏覽(20)
  • sqlserver數(shù)據(jù)庫創(chuàng)建自定義數(shù)據(jù)類型的表

    用戶定義表數(shù)據(jù)類型是從SQL Server 2008開始提供的一種新功能。 本文主要向大家介紹了SQLServer數(shù)據(jù)庫之Sqlserver 自定義表類型定義,使用,刪除,通過具體的內(nèi)容向大家展現(xiàn),希望對大家學(xué)習(xí)SQLServer數(shù)據(jù)庫有所幫助。 在sqlserver數(shù)據(jù)庫中 創(chuàng)建自定義數(shù)據(jù)庫類型,并且自定義數(shù)據(jù)類

    2024年02月06日
    瀏覽(18)
  • mysql如何查詢數(shù)據(jù)庫里的表

    要在MySQL中查詢數(shù)據(jù)庫里的所有表,你可以使用 SHOW TABLES 命令。 下面是步驟說明: 登錄MySQL : 使用命令行工具登錄到MySQL數(shù)據(jù)庫。例如: 選擇要查詢的數(shù)據(jù)庫 : 使用 USE [數(shù)據(jù)庫名]; 來選擇你要查詢的數(shù)據(jù)庫。例如,要選擇名為 sampledb 的數(shù)據(jù)庫,你可以運行: 查詢數(shù)據(jù)庫里的

    2024年02月06日
    瀏覽(24)
  • 查看服務(wù)器中數(shù)據(jù)庫的表和數(shù)據(jù)

    要查看數(shù)據(jù)庫中的表和表中的數(shù)據(jù),您可以按照以下步驟進(jìn)行操作: 1. 進(jìn)入 MySQL 控制臺。使用以下命令連接到 MySQL 控制臺: ? ?``` ? ?mysql -u root -p ? ?``` ? ?輸入 MySQL root 用戶的密碼并按 Enter 鍵。 2. 選擇要查看的數(shù)據(jù)庫。使用以下命令選擇要查看表和數(shù)據(jù)的數(shù)據(jù)庫: ?

    2024年02月11日
    瀏覽(23)
  • 學(xué)生信息數(shù)據(jù)庫(stusys)的表結(jié)構(gòu)和樣本數(shù)據(jù)

    學(xué)生信息數(shù)據(jù)庫(stusys)的表結(jié)構(gòu)和樣本數(shù)據(jù)

    #(1)創(chuàng)建數(shù)據(jù)庫stuexpm create database stuexpm; #(2)創(chuàng)建studentinfo表,顯示studentinfo表的基本結(jié)構(gòu) #表4.9 use stuexpm; create table StudentInfo ( StudentID varchar(6) not null primary key comment\\\'學(xué)號\\\', Name varchar(8) not null comment\\\'姓名\\\', Sex varchar(2) not null default \\\'男\(zhòng)\\' comment\\\'性別\\\', Birthdar date not null comment\\\'出生

    2024年02月05日
    瀏覽(19)
  • spark sql 查看全部數(shù)據(jù)庫的表

    大數(shù)據(jù)環(huán)境下,metastore一般都交個hive處理,隨著數(shù)據(jù)庫 表 越來越多,進(jìn)行源數(shù)據(jù)管理的就會成為痛點,如何能夠查詢出所有的數(shù)據(jù)庫下的所有表 Spark 官方文檔Tables 官方給的sample中,只能一個庫一個庫查詢,如果有成百上千個庫呢? 從 Python 3.6 開始,Python f 字符串可用。

    2024年02月14日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包