#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 = '****',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:Usersgilmar.meloAppDataLocalProgramsPythonPython38libsite-packagespandasiosql.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), код выполняется нормально.
Комментарии:
1. Это не стандартный символ ascii, какую кодировку вы используете?
2. Я использую # — — coding: latin-1 — — в начале кода.
3. Проверьте документ cx_Oracle cx-oracle.readthedocs.io/en/latest/user_guide /…