cx_Oracle使用HTML实体返回varchar列

时间:2016-09-23 20:12:41

标签: python oracle cx-oracle

当使用cx_Oracle查询数据库时,我有一个存储文本为varchar2的列。出于某种原因,如果我有“<”或“>”或者像存储在表中的那些字符,然后当我查询表时,它用它们的HTML实体等效替换那些值(例如:“<”变为“& lt;”)。例如:

如果我的表中有以下数据:

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;"]

为什么会这样?除了遍历每个列/行并进行查找/替换之外,我怎么能阻止它发生呢?

1 个答案:

答案 0 :(得分:0)

为了做到这一点,你必须在cx_Oracle和你的代码之间使用某种代码。返回数据时,cx_Oracle返回元组而不是列表。如下所示:

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

尝试在命令提示符下使用python,而不导入任何其他模块。您可以使用命令

检查要导入的模块
python -v