zoukankan      html  css  js  c++  java
  • oracle——存储数据时的编码问题

    原文:https://blog.csdn.net/aachangs/article/details/87820818

    数据库编码问题

    新手入坑,第一次使用oracle数据库,还是与mysql略有不同,首先在插入数据时的SQL语法有很大不同,mysql写法:

    1 insert into tablename values (%s,%s)

    oracle中插入写法:

    1 insert into tablename(ITEM_ID, CONTENT) values (:ITEM_ID, :CONTENT)

    问题描述
    mysql和python都是utf-8编码,oracle为SIMPLIFIED CHINESE_CHINA.ZHS16GBK,想把mysql中的一些数据导入到oracle,琢磨着写个程序来导(毕竟程序猿),于是就发生了一下错误:

    1 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格式,问题解决。代码如下:

    1 conn = cx_Oracle.connect(self.user+'/'+self.password+'@'+self.host+':'+str(self.port)+'/'+self.db, encoding='utf8')
  • 相关阅读:
    DS博客作业03--树
    DS博客作业02--栈和队列tt
    DS博客作业02--线性表
    c博客06-结构体&文件
    C博客作业05--指针
    C语言博客作业04--数组
    C语言博客作业03--函数
    图书馆
    DS博客作业05——查找
    DS博客作业04——图
  • 原文地址:https://www.cnblogs.com/heymonkey/p/12146252.html
Copyright © 2011-2022 走看看