【发布时间】:2013-12-29 09:38:30
【问题描述】:
我在使用 csv 和 cx_oracle 模块时遇到了一些严重问题。我想读取一个以 UTF-8 保存的 csv 文件(我通过使用记事本以 UTF-8 保存它来检查它)。我现在可以很好地阅读所有内容(在我将其保存为 UTF-8 之前它没有)。这是我读取 csv 文件的代码:
with open(file, 'rt', encoding='utf-8') as csvfile:
csvinput = csv.reader(csvfile, delimiter = ',', quotechar = '"')
for row in csvinput:
data.append(row)
这会将所有内容保存到二维数组中。 每当我想在数据库中插入一些东西时,我都会做一个准备好的语句,然后将文本加载到其中:
data = [lastname, firstname]
cursor = cx_Oracle.Cursor(connection)
cursor.prepare("SELECT * FROM PRIVATE WHERE NAME = :1 AND FIRSTNAME = :2")
cursor.execute(None, data)
res = cursor.fetchall()
cursor.close()
它给了我很多错误,例如:
UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 1: ordinal not in range(128)
我尝试阅读整个内容,但我对 unicode 的东西感到相当困惑,因为我真的不知道我应该在哪里使用什么以及为什么...... 任何帮助表示赞赏。 TLDR 我在尝试执行准备好的语句时遇到编码错误
【问题讨论】:
-
显示回溯。哪一行产生了错误?
-
cursor.execute 给了我错误 (cursor.execute(None, data))
-
PRIVATE表的架构是什么?您使用了哪些列类型? -
列类型为 VARCHAR2
标签: python oracle csv cx-oracle