2016-09-23 9 views
0

データベースを照会するためにcx_Oracleを使用する場合、varchar2としてテキストを格納するカラムがあります。何らかの理由で、「<」または「>」またはテーブルに格納されている文字のような文字がある場合、テーブルにクエリを実行すると、それらの値はHTMLエンティティに置き換えられます(例:「<」は「& lt; )。たとえば:cx_OracleがHTMLエンティティを持つvarcharカラムを返す

ID | VARCHAR2_DATA 
----|----------------- 
1 | <span>hi1</span> 
2 | <span>hi2</span> 

そして私は、次のコードを実行します:

私は私のテーブルに以下のデータを持っている場合は

import cx_Oracle 
conn = cx_Oracle.connect(DATABASE_CONNECTION_STRING) 
cursor = conn.cursor() 
cursor.execute("SELECT * FROM TABLE") 
ret_data = cursor.fetchall() 

ret_dataが含まれています:

[1, "&lt;span&gt;hi1&lt;/span&gt;"], 
[2, "&lt;span&gt;hi2&lt;/span&gt;"] 

をなぜこれが起こるのですか?各列/行を反復処理し、検索/置換を行う以外の方法は、どのようにして停止させることができますか?

+0

どのようにデータを保存しましたか? – Daniel

+0

私は、cx_OracleとOracle SQL Developerアプリケーションの両方を使用して挿入しました。それは違いを生じさせるようではありません。 Oracle SQL Developerでは、Pythonからクエリを実行したときに正しく表示されません。 –

+0

@AlecRosenbaum:これはPython 3.5.2とcx_Oracle 5.2.1(どちらもwin-64)で再現できません。 PythonシェルからもIDE内部でも実行されません。あなたの環境に関する情報を教えてください。 –

答えて

0

これを実行するには、cx_Oracleとコードの間に何らかのコードが必要です。 cx_Oracleは、データを返すときにリストではなくタプルを返します。次のように:

[(1, '<span>hi1</span>'), (2, '<span>hi2</span>')] 

追加のモジュールをインポートせずにコマンドプロンプトでpythonを使用してみてください。コマンドを使用してインポートするモジュールを確認することができます

python -v 
関連する問題