Python cx_Oracle問題處理


今天第一次使用Python連接Oracle數據庫(多么可怕,三年碼農沒用Python手動連過Oracle)

 

首先:

pip install cx_Oracle

  好,安裝完成,測試代碼如下:

from sqlalchemy import create_engine  

db_engine = create_engine('oracle://xynsx:whjyg_xynsx@10.128.85.8:1521/xyora') 
conn=db_engine.connect()
result=conn.execute('SELECT * FROM PJ_CZP')
conn.close()

for item in result:
	print('item------------->', item)

  好,從這開始,悲劇了

sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) DPI-1047: 32-bit Oracle Client library cannot be loaded: 
"The specified module could not be found". See https://oracle.github.io/odpi/doc/installation.html#windows for help
(Background on this error at: http://sqlalche.me/e/4xp6)


  報錯了,簡單看是因為我用的是32位的Oracle Client 包,它找不到了。立馬從Navicat Premium安裝路徑中找到instantclient_11_2,在其目錄下找到三個dll文件:

oci.dll,oraocci11.dll,oraociei11.dll,拷貝到Python目錄下的:Lib\site-packages目錄下

再次測試,再次悲劇,提示不能加載正常,好吧,我的Navicat Premium是64位的,重新下載一個instantclient_11_2的32位版本,然后三個dll文件重新拷貝。

成功,數據取到了,但是。。。。。

 

 各種問好是什么鬼?

 

 

 查看發現Oracle默認編碼格式為:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

找到原因,就要改正了。

修改代碼如下:

 

# coding:utf-8

import os

from sqlalchemy import create_engine  

os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
db_engine = create_engine('oracle://xynsx:whjyg_xynsx@10.128.85.8:1521/xyora') 


conn=db_engine.connect()
result=conn.execute('SELECT * FROM PJ_CZP')
conn.close()
print('res===============>', result)
for item in result:
	print('item------------->', item)

  好了,完全木有問題了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM