pandas的read_sql报错UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd3 in position 0: invalid con

来源:互联网 发布:网络选修课 编辑:程序博客网 时间:2024/06/18 04:27

 1.这个错误一旦发生,很难找出来,下面是错误代码

问题主要针对数据库中字段含中文,编码方式gbk等其他的。

import numpy as np
import pandas as pd
from sqlalchemy import create_engine

engine = create_engine('oracle://scott:tiger@localhost:1521/orcl1?charset=utf8')

df3=pd.read_sql_table('ys_table1',engine)

从问题看好像编码错误,但是按网上的怎么修改都还是错误。


第2种情况

import numpy as np
import pandas as pd
from sqlalchemy import create_engine

engine = create_engine('oracle://scott:tiger@localhost:1521/orcl1?charset=utf8')

df3=pd.read_sql_table('ys_table1',engine)

报错后加了

import os  

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

df3=pd.read_sql_table('ys_table1',engine)

依然报错

第3种情况

import numpy as np
import pandas as pd
from sqlalchemy import create_engine

import os  

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

engine = create_engine('oracle://scott:tiger@localhost:1521/orcl1?charset=utf8')

df3=pd.read_sql_table('ys_table1',engine)

成功执行df3。

问题解决了,有没有大牛知道为什么要先加os.environ才能执行成功,后加就不能成功,问题浪费太多时间,求解答。

2.另外针对cx_oracle的安装成功运行sql报错问题,主要涉及软件版本兼容问题,如oracle32位,python64位出现编码错误,

其实是版本兼容问题,要安装一致才行,这个问题不详解。



阅读全文
0 0
原创粉丝点击