我使用带有jaydebeapi
和informix 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.
答案 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''
前缀,则绝对不需要进行编码。不要在实际数据的容器表示中混淆类型指示符。