1. 程式人生 > >Python3操作oracle數據庫及遇到的報錯

Python3操作oracle數據庫及遇到的報錯

python 操作oracle

首先下載及安裝cx_Oracle:
下載地址:
 安裝:pip3.6 install E:\Python36\Scripts\cx_Oracle-6.0.2-cp36-cp36m-win_amd64.whl
 
 編寫一個簡單的測試代碼:
import cx_Oracle as ora
# print(ora.version)
# 打開數據庫連接
# conn = ora.connect("temp", "admin", "localhost:1521/orcl")
conn = ora.connect(‘temp/[email protected]:1521/orcl‘)
# 使用cursor()方法獲取操作遊標
cr = conn.cursor()sql = ‘‘‘
    select empno, ename, job, mgr, hiredate, sal, comm, deptno, sal+comm as a from emp
    WHERE deptno = :did
    ‘‘‘
cr.execute(sql,did = 30)
for i in cr:
    print(i)
# 關閉數據庫連接
cr.close()
# 提交操作
#conn.commit()
conn.close()

運行代碼,結果居然報錯了!


報錯內容如下:

conn = ora.connect(‘temp/[email protected]:1521/orcl‘)

UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position 82-83: invalid continuation byte

一看就是一個字符編碼的問題,但無論怎麽設置都不能解決問題,在網上也找了類似的錯誤解決方案,都不能得到解決。

在百度看見一條說系統、oracle客戶端、Python要同樣是64位或者32位的,不然就報這個錯誤。

我的電腦系統是64位、Python也是64位的,但是oracle客戶端確是32的,這是因為我要連接plsql developer,以前的版本不支持64的客戶端。

這樣我刪除了32位的oracle客戶端,重新安裝了64位的客戶端,結果發現還是會報同樣的錯誤,我就郁悶了,突然靈光一閃環境變量沒有配,Python是需要oci.dll文件的,我就在環境變量中做了一下配置:

e:\Oracle\Instant Client\bin

重啟IDE,再次運行,問題解決。

Python3操作oracle數據庫及遇到的報錯