python项目读Oracle数据遇到了中文乱码

在使用Python读取Oracle数据时,出现了中文乱码,如下:

代码如下:

import cx_Oracle


class OracleSessionPool(object):

    def __init__(self, user, password, ip, name):
        self.conn_pool = cx_Oracle.SessionPool(
            user=user,
            password=password,
            dsn='%s/%s' % (ip, name),
            min=1,
            max=500,
            increment=1
        )

    def conn(self):
        return self.conn_pool.acquire()

    def fetch_all(self, sql):
        con = self.conn_pool.acquire()
        cursor = con.cursor()
        cursor.execute(sql)  # 执行sql语句
        con.commit()
        try:
            data = cursor.fetchall()  # 获取数据
        except Exception:
            data = []
        con.close()
        return data

    def close(self):
        self.conn_pool.release()

使用如下:

oracle = OracleSessionPool('account','password', 'ip', 'name')

data = oracle.fetch_all(TABLES_SQL)
print('table_sql数据:%s' % data)

然后,读取到的数据存在中文乱码问题。

解决方法:

使用os库将Python编码设置为与Oracle中的编码一致:

os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'

oracle = OracleSessionPool('account','password', 'ip', 'name')

data = oracle.fetch_all(TABLES_SQL)
print('table_sql数据:%s' % data)

乱码问题解决:

posted @ 2022-07-27 10:02  yingzi__block  阅读(699)  评论(0编辑  收藏  举报