2016-09-23 67 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 shell還是在IDE內部運行。你能提供一些關於你的環境的信息嗎? –

回答

0

您必須具有某種類型的代碼才能在cx_Oracle和您的代碼之間傳遞。返回數據時,cx_Oracle返回元組,而不是列表。如下所示:

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

嘗試在命令提示符下使用python,而不導入任何其他模塊。您可以使用命令查看要導入哪些模塊

python -v