【问题标题】:cx_Oracle returning varchar columns with HTML entitiescx_Oracle 返回带有 HTML 实体的 varchar 列
【发布时间】:2023-03-18 11:23:01
【问题描述】:

当使用 cx_Oracle 查询数据库时,我有一列将文本存储为 varchar2。出于某种原因,如果我有“”或类似存储在表中的字符,那么当我查询表时,它会将这些值替换为其等效的 HTML 实体(例如:“

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

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

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

【问题讨论】:

  • 你是如何存储数据的?
  • 我使用 cx_Oracle 和 Oracle SQL Developer 应用程序插入。这似乎没有什么不同。在 Oracle SQL Developer 中,它正确显示,只是当我从 python 查询时却没有。
  • @AlecRosenbaum:我无法使用 Python 3.5.2 和 cx_Oracle 5.2.1(均为 win-64)重现此问题。既不是来自 python shell,也不是在 IDE 中运行。你能提供一些关于你的环境的信息吗?

标签: python oracle cx-oracle


【解决方案1】:

您必须在 cx_Oracle 和您的代码之间有某种代码才能执行此操作。 cx_Oracle 在返回数据时返回元组,而不是列表。如下:

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

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

python -v

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 2018-11-05
    相关资源
    最近更新 更多