删除你'来自cursor.fetchall()的结果

时间:2014-12-06 18:48:52

标签: python unicode jaydebeapi

我使用带有jaydebeapiinformix jdbc driver (ifxjdbc.jar)的python 2.7来执行表格上的选择,所有字段都有u'some_text' 这是我的代码

curs = conn.cursor()
curs.execute("SELECT * FROM table1")
res = curs.fetchall()
print res
使用

res_final=[str(x) for x in res[0]]
print res_final

正确转换结果中的第一行。知道如何转换所有选定的行?我在sqlite3上遇到了同样的问题但添加了

conn.text_factory=str 

解决了我的问题。我找不到jaydebeapi.

以相同方式工作的内容

1 个答案:

答案 0 :(得分:3)

如果您绝对需要将Unicode值编码为字节串,请尝试尽可能晚地 ,例如将值推送到只能处理字节的位置时,如文件或网络套接字。

您可以使用嵌套列表解析对所有行中的所有列进行编码:

res = [col.encode('utf8') if isinstance(col, unicode) else col for col in row]
       for row in curs.fetchall()]

仅以对所有Unicode代码点一起使用的方式对实际为Unicode字符串的值进行编码。

但是,如果您关心的只是u''前缀,则绝对不需要进行编码。不要在实际数据的容器表示中混淆类型指示符。