<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          python操作Oracle數(shù)據(jù)庫(kù),你學(xué)會(huì)了嗎?

          共 3523字,需瀏覽 8分鐘

           ·

          2020-08-21 12:18

          點(diǎn)擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

          回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書

          羽翼摧殘日,郊園寂寞時(shí)。

          1. 準(zhǔn)備工作

          首先,你必須安裝好Oracle數(shù)據(jù)庫(kù)。Oracle數(shù)據(jù)庫(kù)的安裝并不是那么容易,大家可以去找一個(gè)安裝教程,慢慢研究。

          其次,你既然用Python操作Oracle,你必須要安裝Python吧。Python的安裝過(guò)程較為簡(jiǎn)單。但是有一點(diǎn)需要注意:一定要安裝64位的Python,不要使用32位的。

          最后,也是最復(fù)雜的一步。我們需要進(jìn)行instantclient的下載安裝和環(huán)境配置,它是oracle數(shù)據(jù)庫(kù)的客戶端,這個(gè)最好也是下載64位的。

          2. instantclient的安裝與配置

          1)instantclient的下載地址

          在進(jìn)行instantclient的安裝與配置之前,我先提供給大家一個(gè)下載鏈接,供大家下載,我們直接下載像11或者12這樣的高版本,即可。

          instantclient的下載地址:http://suo.im/5Dlqrr

          2)instantclient的安裝

          ① 直接解壓instantclient安裝包;

          ② 解壓后的文件位置,不要隨意放置;

          我們需要將instantclient安裝包,解壓后得到的文件夾,放置在Oracle安裝目錄下的product的直接字目錄下。

          3)instantclient的環(huán)境配置

          ① 按照?qǐng)D中操作,完成環(huán)境變量的配置;

          ② 將其解壓目錄下的oraociei11.dll、oraocci11.dll、oci.dll文件復(fù)制到python安裝目錄的Lib/site-packages文件夾下;

          instantclient安裝包解壓后的文件夾:

          python安裝目錄下的Lib/site-packages文件夾:

          3. 其他需要特別注意的點(diǎn)

          1)解決中文亂碼問(wèn)題

          當(dāng)使用Python讀取到Oracle數(shù)據(jù)庫(kù)中的某張表,如果該表中存在中文,會(huì)出現(xiàn)中文亂碼的問(wèn)題。因此需要設(shè)置NLS_LANG環(huán)境變量,來(lái)解決這個(gè)問(wèn)題,下面提供了兩種方式。

          ① 打開CMD黑窗口,輸入以下命令;

          ?C:\Users\AA>set?nls_lang=SIMPLIFIED?CHINESE_CHINA.ZHS16GBK

          ② 直接在寫代碼的時(shí)候,輸入以下命令;

          import?os
          os.environ['NLS_LANG']?=?'SIMPLIFIED?CHINESE_CHINA.UTF8'

          注意: 上述兩種方式書寫命令的位置不同,不要弄錯(cuò)了。其次,上述設(shè)置NLS_LANG環(huán)境變量的方式,僅對(duì)當(dāng)前窗口有效。其實(shí),我們也可以永久修改NLS_LANG環(huán)境變量,但是請(qǐng)不要這么做。

          2)關(guān)于cx_Oracle驅(qū)動(dòng)包的安裝,需要注意的問(wèn)題

          cx_Oracle是Python操作Oracle數(shù)據(jù)庫(kù),需要使用的驅(qū)動(dòng)包。類似于Python操作MySQL使用的pymysql驅(qū)動(dòng)包。

          對(duì)于我來(lái)說(shuō),我直接使用下面這個(gè)命令,就安裝成功:

          pip?insatll?cx_Oracle

          如果你的系統(tǒng)環(huán)境,導(dǎo)致安裝失敗,我這里提供兩個(gè)鏈接,供你下載和學(xué)習(xí):

          cx_Oracle驅(qū)動(dòng)包的下載:http://suo.im/6fGFSR

          cx_Oracle安裝教程:http://suo.im/5DlvxT

          4. Python與Oracle交互操作

          其實(shí)Python操作Oracle數(shù)據(jù)庫(kù),和Python操作MySQL數(shù)據(jù)庫(kù),基本上都是一樣的道理,一通百通。我之前已經(jīng)寫了一個(gè)Python操作MySQL數(shù)據(jù)庫(kù)的詳細(xì)教程,下面提供給大家這個(gè)鏈接。

          Python操作MySQL數(shù)據(jù)庫(kù):http://suo.im/6fGJhl

          1)Python鏈接Oracle服務(wù)器的3種方式

          ① 用戶名、密碼和監(jiān)聽寫在一起

          import?cx_Oracle
          db?=?cx_Oracle.connect('scott/a123456@DESKTOP-V4LKB10:1521/orcl')

          ② 用戶名、密碼和監(jiān)聽分開寫

          import?cx_Oracle
          db?=?cx_Oracle.connect("scott","a123456","192.168.2.1:1521/orcl")

          ③ 配置監(jiān)聽并連接

          import?cx_Oracle
          moniter?=?cx_Oracle.makedsn('192.168.2.1',1521,'orcl')
          db?=?cx_Oracle.connect('scott','a123456',moniter)

          2)Python怎么獲取Oracle中的數(shù)據(jù)(查)

          數(shù)據(jù)分析師日常工作用到最多的就是“查”,因此我們只講述怎么查數(shù)據(jù)。關(guān)于其它的增刪改操作,都是類似于MySQL,這里就不詳細(xì)說(shuō)明。

          ① fetchone():一次獲取一條記錄;

          import?cx_Oracle
          #?注意:一定要加下面這兩行代碼,負(fù)責(zé)會(huì)中文亂碼;
          import?os
          os.environ['NLS_LANG']?=?'SIMPLIFIED?CHINESE_CHINA.UTF8'

          db?=?cx_Oracle.connect("scott","a123456","192.168.2.1:1521/orcl")
          cursor?=?db.cursor()

          cursor.execute('select?count(*)?from?emp1')
          aa?=?cursor.fetchone()
          print(aa)
          cursor.execute('select?ename,deptno,sal?from?emp1')?????
          for?i?in?range(aa[0]):
          ????a,b,c?=?cursor.fetchone()
          ????d?=?"我的名字叫{},所在部門是{},工資是{}美元".format(a,b,c)
          ????display(d)
          db.close()

          截取部分結(jié)果如下:

          ② fetchall():一次獲取所有記錄;

          import?cx_Oracle
          #?注意:一定要加下面這兩行代碼,負(fù)責(zé)會(huì)中文亂碼;
          import?os
          os.environ['NLS_LANG']?=?'SIMPLIFIED?CHINESE_CHINA.UTF8'

          db?=?cx_Oracle.connect("scott","a123456","192.168.2.1:1521/orcl")
          cursor?=?db.cursor()

          cursor.execute('select?ename,deptno,sal?from?emp1')????
          aa?=?cursor.fetchall()
          #?print(aa)
          for?a,b,c?in?aa:
          ????d?=?"我的名字叫{},所在部門是{},工資是{}美元".format(a,b,c)
          ????display(d)
          db.close()

          截取部分結(jié)果如下:

          ③ 使用pandas中的read_sql()方法,將提取到的數(shù)據(jù)直接轉(zhuǎn)化為DataFrame進(jìn)行操作;

          import?cx_Oracle
          import?pandas?as?pd
          import?os
          os.environ['NLS_LANG']?=?'SIMPLIFIED?CHINESE_CHINA.UTF8'

          db?=?cx_Oracle.connect("scott","a123456","192.168.2.1:1521/orcl")
          cursor?=?db.cursor()

          df1?=?pd.read_sql("select?*?from?emp?where?deptno=20",db)
          display(df1)

          df2?=?pd.read_sql("select?*?from?emp?where?deptno=30",db)
          display(df2)

          結(jié)果如下:


          -------------------?End?-------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

          萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行

          /今日留言主題/

          隨便說(shuō)一兩句吧~~

          瀏覽 76
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人一级黄色电影 | 欧美操逼视频在线观看 | 特黄AAAAAAAAA级毛片厂 | 嫩草网址| 一区二区三区高清无码 |