【问题标题】:pd.read_sql from oracle returns decode error来自 oracle 的 pd.read_sql 返回解码错误
【发布时间】:2019-11-22 23:22:55
【问题描述】:

我正在尝试使用 PANDAS 从 ORACLE 读取数据:

pd.read_sql(sql, myORACLEinfo)

其中 sql 是一条选择语句

我不拥有 ORACLE 表,也不能更改表日期。

pd.read_sql 正在返回此错误:

 refresh 'charmap' codec can't decode byte 0x81 in position 1101:
 character maps to <undefined>

有没有办法逃避/忽略这个错误。
我尝试在炼金术 create_engine 设置中添加:encoding='iso-8859-1'

假设 ORACLE 的默认编码是iso-8859-1,但这并没有帮助

【问题讨论】:

  • 试试这个 pd.read_sql_query(sql,myORACLEinfo)
  • 你可以看看this link
  • 您使用哪个接口连接?我更喜欢cx_Oracle.connect,它适用于我使用 Python 3.x 的默认编码。
  • Oracle DB 中使用了什么字符集:select * from nls_database_parameters where parameter='NLS_CHARACTERSET' ?
  • 嗨 MaxU。感谢您的 QRY。我运行它并得到'AL32UTF8'。我不是 DBA,无法控制设置。

标签: sql python-3.x oracle pandas sqlalchemy


【解决方案1】:

这是一个编码问题。 对于python 2.7cx_Oracle 7.3.0:连接Oracle DB时,需要指定编码类型如下:

x_Oracle.connect(username, password, connection_string, encoding="UTF-8")

nencoding parameter = "UTF-8"也可以指定。

干杯!

【讨论】:

    猜你喜欢
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    相关资源
    最近更新 更多