用python連接Oracle是總是亂碼,最有可能的是oracle客戶端的字符編碼設置不對。
本人是在進行數據插入的時候總是報關鍵字"From"不存在,打印插入的Sql在pl/sql中進行插入,沒有問題。所以,后來從字符集編碼上去考慮和解決問題。
編寫的python腳本中需要加入:
import osos.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設置及編碼轉換
在Oracle客戶端向服務器端提交SQL語句時,Oracle客戶端根據NLS_LANG和數據庫字符集,對從應用程序接傳送過來的字符串編碼進行轉換處理。如果NLS_LANG與數據庫字符集相同,不作轉換,否則要轉換成數據庫字符集并傳送到服務器。服務器在接收到字符串編碼之后,對于普通的CHAR或VARCHAR2類型,直接存儲;對于NCHAR或NVARCHAR2類型,服務器端將其轉換為國家字符集再存儲。
以上這篇解決python通過cx_Oracle模塊連接Oracle亂碼的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
|
新聞熱點
疑難解答