Ich weiß, es wurde mehrmals gefragt, aber keiner der Antwort gab mir eine LösungUnicodeEncodeError: 'Ascii' Codec kann nicht codieren Zeichen u ' xe9' in Position 54: Ordnungszahl nicht im Bereich (128)
Hierist der Code (Python 2.7):
import cx_Oracle
import pandas as pd
connstr = 'MyConstr'
conn = cx_Oracle.connect(connstr)
cur = conn.cursor()
xl = pd.ExcelFile("C:\\TEMP\\for_kkod.xlsx")
df = xl.parse(0)
for i in df.index:
s = u"insert into MY_TABLE values({0}, '{1}')".format(int(df.iloc[i]['kkod']), df.iloc[i]['kkodnev'])
print s
print type(s)
cur.execute(s)
das Ergebnis der 2 Drucke sind dies:
insert into MY_TABLE values(10, 'Készítés')
<type 'unicode'>
Wie Sie die Art der s sehen kann Unicode ist, aber trotzdem habe ich diese Fehlermeldung:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 54: ordinal not in range(128)
Ich habe mit und ohne u „“ versucht, mit und ohne Codierung und Decodierung auf alle möglichen Weisen, aber immer noch die gleiche Fehlermeldung
Jede Idee?
Sie ein * kodieren * Fehlermeldung erhalten, weil 'cur.execute()' Bytestring erwartet. –
Ja, aber mein erster Versuch war das: cur.execute ("Einfügen in MYTABLE-Werte (% s,% s)", (int (df.iloc [i] ['kkod']), df.iloc [i] ['kkodnev'])) – Gabor