【发布时间】:2016-09-05 06:05:19
【问题描述】:
我知道,已经问了好几次了,但没有一个答案给我解决方案
这里是代码(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)
两次打印的结果是这样的:
insert into MY_TABLE values(10, 'Készítés')
<type 'unicode'>
如您所见,s 的类型是 unicode,但我仍然收到以下错误消息:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 54: ordinal not in range(128)
我尝试过使用和不使用 u"",使用和不使用所有可能的方式进行编码和解码,但仍然出现相同的错误消息
有什么想法吗?
【问题讨论】:
-
你得到一个 encode 错误,因为
cur.execute()需要一个字节串。 -
是的,但我的第一次尝试是这样的:cur.execute("insert into MYTABLE values(%s, %s)", (int(df.iloc[i]['kkod']) , df.iloc[i]['kkodnev']))
标签: python python-2.7 cx-oracle python-unicode