2

jaydebeapiテーブルで選択を実行するためにPython 2.7 を使用しinformix jdbc driver (ifxjdbc.jar)ていますが、すべてのフィールドには次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.

4

1 に答える 1

3

どうしても Unicode 値をバイト文字列にエンコードする必要がある場合は、ファイルやネットワーク ソケットなど、バイトのみを処理できる場所に値をプッシュする場合など、できるだけ遅く行うようにしてください。

ネストされたリスト内包表記を使用して、すべての行のすべての列をエンコードできます。

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

これは、すべての Unicode コードポイントで機能する方法で、実際には Unicode 文字列である値のみをエンコードします。

u''ただし、プレフィックスだけを気にする場合は、エンコードする必要はまったくありません。実際のデータのコンテナー表現で型インジケーターを混同しないでください。

于 2014-12-06T18:55:11.537 に答える