解決python通過cx_Oracle模塊連接Oracle亂碼的問題
用python連接Oracle是總是亂碼,最有可能的是oracle客戶端的字符編碼設(shè)置不對。
本人是在進行數(shù)據(jù)插入的時候總是報關(guān)鍵字"From"不存在,打印插入的Sql在pl/sql中進行插入,沒有問題。所以,后來從字符集編碼上去考慮和解決問題。
編寫的python腳本中需要加入:
import os os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
這樣可以保證select出來的中文顯示沒有問題。
要能夠正常的insert和update中文,還需要指定python源文件的字符集密碼和oracle一致。
# -*- coding: utf-8 -*-
示例:
# -*- coding: utf-8 -*- import os os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' #或者os.environ['NLS_LANG'] = 'AMERICAN_AMERICA.AL32UTF8' import cx_Oracle db = cx_Oracle.connect(username/passwd@host:port/sevicename) cursor = db.cursor() #其他操作 db.commit() db.close()
客戶端的NLS_LANG設(shè)置及編碼轉(zhuǎn)換
在Oracle客戶端向服務(wù)器端提交SQL語句時,Oracle客戶端根據(jù)NLS_LANG和數(shù)據(jù)庫字符集,對從應(yīng)用程序接傳送過來的字符串編碼進行轉(zhuǎn)換處理。如果NLS_LANG與數(shù)據(jù)庫字符集相同,不作轉(zhuǎn)換,否則要轉(zhuǎn)換成數(shù)據(jù)庫字符集并傳送到服務(wù)器。服務(wù)器在接收到字符串編碼之后,對于普通的CHAR或VARCHAR2類型,直接存儲;對于NCHAR或NVARCHAR2類型,服務(wù)器端將其轉(zhuǎn)換為國家字符集再存儲。
以上這篇解決python通過cx_Oracle模塊連接Oracle亂碼的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
對python抓取需要登錄網(wǎng)站數(shù)據(jù)的方法詳解
今天小編就為大家分享一篇對python抓取需要登錄網(wǎng)站數(shù)據(jù)的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05Python如何把不同類型數(shù)據(jù)的json序列化
這篇文章主要介紹了Python如何把不同類型數(shù)據(jù)的json序列化,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04pyinstaller 3.6版本通過pip安裝失敗的解決辦法(推薦)
這篇文章主要介紹了pyinstaller 3.6版本通過pip安裝失敗的解決辦法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01Python基礎(chǔ)請求庫urllib模塊使用深入探究
在Python中,urllib庫是一個強大的模塊,用于處理URLs,它包含了多個子模塊,其中urllib.request是用于發(fā)出HTTP請求的核心組件,本文將深入探討urllib的基本使用、高級功能以及一些實際場景的示例,方便更全面地了解這個重要的網(wǎng)絡(luò)請求工具2024-01-01python numpy矩陣信息說明,shape,size,dtype
這篇文章主要介紹了python numpy矩陣信息說明,shape,size,dtype,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05pandas時間序列之pd.to_datetime()的實現(xiàn)
本文主要介紹了pandas時間序列之pd.to_datetime()的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>2022-06-06