解決python通過cx_Oracle模塊連接Oracle亂碼的問題

 更新時間:2018年10月18日 14:50:33   作者:BabyFish13   我要評論

今天小編就為大家分享一篇解決python通過cx_Oracle模塊連接Oracle亂碼的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

用python連接Oracle是總是亂碼,最有可能的是oracle客戶端的字符編碼設置不對。

本人是在進行數據插入的時候總是報關鍵字"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/[email protected]: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亂碼的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • python解析xml文件實例分享

    python解析xml文件實例分享

    這篇文章主要介紹了python解析XML文件的方法,大家參考使用吧
    2013-12-12
  • python生成日歷實例解析

    python生成日歷實例解析

    這篇文章主要介紹了python生成日歷的方法,實用了python自帶的 calendar模塊加以實現,需要的朋友可以參考下
    2014-08-08
  • Python編程實現控制cmd命令行顯示顏色的方法示例

    Python編程實現控制cmd命令行顯示顏色的方法示例

    這篇文章主要介紹了Python編程實現控制cmd命令行顯示顏色的方法,結合實例形式分析了Python針對命令行字符串顯示顏色屬性相關操作技巧,需要的朋友可以參考下
    2017-08-08
  • python操作redis方法總結

    python操作redis方法總結

    本篇文章給大家總結了python操作redis的實際方法和實例代碼,有興趣的朋友參考學習下。
    2018-06-06
  • 基于python繪制科赫雪花

    基于python繪制科赫雪花

    這篇文章主要為大家詳細介紹了基于python繪制科赫雪花,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python 2.x如何設置命令執行的超時時間實例

    Python 2.x如何設置命令執行的超時時間實例

    這篇文章主要給大家介紹了關于Python 2.x如何設置命令執行超時時間的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • python版簡單工廠模式

    python版簡單工廠模式

    這篇文章主要為大家詳細介紹了python版簡單工廠模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Python中偏函數用法示例

    Python中偏函數用法示例

    這篇文章主要介紹了Python中偏函數用法,結合實例形式分析了Python基于functools模塊創建和使用偏函數的相關操作技巧與注意事項,需要的朋友可以參考下
    2018-06-06
  • python Socket之客戶端和服務端握手詳解

    python Socket之客戶端和服務端握手詳解

    這篇文章主要為大家詳細介紹了python Socket之客戶端和服務端握手,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 教你如何在Django 1.6中正確使用 Signal

    教你如何在Django 1.6中正確使用 Signal

    因為新的django開發人員得知signal之后, 往往會很高興去使用它. 他們在能使用signal的地方就使用signal, 并且這是他們覺得自己是django專家一樣. 然而, 像這樣編碼一段時間后, django項目就會變得異常復雜, 許多內容都糾結在一起無法解開.
    2014-06-06

最新評論

辽宁35选7开奖结果