Python ascii';编解码器可以';t编码字符'\xf3和x27;SQL/Oracle

Python ascii';编解码器可以';t编码字符'\xf3和x27;SQL/Oracle,python,sql,pandas,oracle,Python,Sql,Pandas,Oracle,我试图从Oracle数据库中提取数据,查询工作正常,但当我试图将其传递到DataFrame时,收到一个错误 # -*- coding: latin-1 -*- import pandas as pd import cx_Oracle as cx_Oracle dsn_tns = cx_Oracle.makedsn(r'****','***', service_name='*****') conn = cx_Oracle.connect(user=r'***',password = '

我试图从Oracle数据库中提取数据,查询工作正常,但当我试图将其传递到DataFrame时,收到一个错误

# -*- coding: latin-1 -*-
    
import pandas as pd
import cx_Oracle as cx_Oracle

dsn_tns = cx_Oracle.makedsn(r'****','***', service_name='*****')
conn = cx_Oracle.connect(user=r'***',password = '****',dsn=dsn_tns)

c = conn.cursor()
try:
    query = '''
select distinct th.tmhalucod ALUCOD,
                th.tmhespcod ESPCOD,
                NVL(KLS.CURSO_KLS, '#REGISTRO NOVO#') CURSO_KLS,
                ac.tmacod TURMA,
                th.tmhdisperiodo PERIODO_OFERTA

  from temphist th

  join aluncurs ac
    on th.tmhalucod = ac.alucod

  join v_alunsituatual v
    on v.alucod = ac.alucod
   and v.espcod = ac.espcod
   and v.pelcod = ac.pelcod

  join especial e
    on e.espcod = ac.espcod

  LEFT JOIN ROBERTOALMEIDA.DPAA_TB_DE_PARA_CURSO KLS
    ON (KLS.ESPCOD = E.ESPCOD AND KLS.BANCO = 'OLIM')

            '''
     alundisc = pd.read_sql(con = conn, sql = query)

finally:
    conn.close()
每次运行代码时都会出现以下错误

Traceback (most recent call last):
  File "C:\Users\gilmar.melo\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\io\sql.py", line 1586, in execute
    cur.execute(*args, **kwargs)
UnicodeEncodeError: 'ascii' codec can't encode character '\xf3' in position 632: ordinal not in range(128)

如果我不把alundisc=pd.read_sql(con=conn,sql=query)这一行放在代码的开头,代码运行正常。

这不是标准的ascii字符,您使用的是什么编码?我在代码的开头使用了#——编码:拉丁-1。检查cx#U Oracle doc@christorjones谢谢你的提示,它成功了。