python cx oracle插入時資料編碼問題

2021-09-11 04:13:40 字數 931 閱讀 3191

新手入坑,第一次使用oracle資料庫,還是與mysql略有不同,首先在插入資料時的sql語法有很大不同,mysql寫法:

insert into tablename values (%s,%s)
oracle中插入寫法:

insert into tablename(item_id, content) values (:item_id, :content)
問題描述

mysql和python都是utf-8編碼,oracle為simplified chinese_china.zhs16gbk,想把mysql中的一些資料匯入到oracle,琢磨著寫個程式來導(畢竟程式猿),於是就發生了一下錯誤:

unicodeencodeerror: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
問題分析:引起這個問題的原因是編碼格式不同,並不是由於python版本的問題引起的(當然,如果你的python版本是3.0以下也有可能,解決方法 import sys reload(sys) sys.setdefaultencoding(『utf-8』)),但在python版本是3.0以上,就是兩個資料庫字符集不一樣引起的。

解決方法

在連線oracle庫的時候將encoding設定成utf-8格式,問題解決。**如下:

conn = cx_oracle.connect(self.user+'/'+self.password+'@'+self.host+':'+str(self.port)+'/'+self.db, encoding='utf8')

python cx Oracle簡單操作

1,讀取檔案操作 檔案內容 col1 col2 col3 china 1.299 0.004 4.762 usa 0.832 5.196 2.521 讀取指令碼 usr bin env python import cx oracle conn cx oracle.connect loge china...

python cx Oracle錯誤集錦

最近專案上線,python連線資料庫部分出現很多問題,總結一下 錯誤一 python3 unicodeencodeerror gbk codec can t encode character in position xx cx oracle.connenct 的引數中設定引數encoding utf...

python cx oracle 環境搭建

背景說明 之前的環境本來是可以用的,是另外乙個專案 python27 需要的時候搭建的。新專案採用的是python36,安裝的cx oracle的版本是7,而環境中的oracle客戶端是11,導致python查詢部分sql語句的時候出現異常 ora 12609 tns receive timeout...