从oracle数据库打印Python值

2024-10-01 00:31:45 发布

您现在位置:Python中文网/ 问答频道 /正文

在将从oracle表检索到的python值显示到CLOB字段时,我遇到了一个问题:

Oracle查询:

SELECT EXTRACTVALUE(xmltype(t.xml), '/DCResponse/ResponseInfo/ApplicationId') 
  FROM table t 
 WHERE id = 2

在Oracle客户端中显示的值

5701200

Python代码

import cx_Oracle 
conn = cx_Oracle.Connection("user/pwd@localhost:1521/orcl")
cursor = conn.cursor()
cursor.execute("""SELECT EXTRACTVALUE(xmltype(t.xml),'/DCResponse/ResponseInfo/ApplicationId') FROM table t where id = 2""")
for row in cursor:
print(row)

Python控制台:没有显示任何内容!!!我想展示:5701200

请帮忙。 顺致敬意, 詹卡洛


Tags: fromidtablexmlconnselectcursorrow
2条回答

您的代码只有几个问题:

  • cx_Oracle.Connection替换为cx_Oracle.connect
  • 注意与print(row)相关的缩进
  • SELECT语句中的三重双引号是多余的, 用单双引号替换它们
  • 宁愿使用print(row[0])来返回所需的数字,而不是 打印的元组

    import cx_Oracle 
    conn = cx_Oracle.connect('user/pwd@localhost:1521/orcl')
    cursor = conn.cursor()
    
    query  = "SELECT EXTRACTVALUE(xmltype(t.xml),'/DCResponse/ResponseInfo/ApplicationId')"
    query += "  FROM tab t "
    query += " WHERE t.ID = 2 "
    
    cursor.execute( query )
    for row in cursor:
        print(row[0])
    

如本例中所述,将查询分配给变量不是必需的,但最好使用它以恰当地显示长SELECT语句

如果要迭代结果,请使用以下方法:

for row in cursor.execute("sql_query")
    print(row)

或者,您可以按如下方式获取每一行:

cursor = conn.cursor()
cursor.execute("sql_query")
while True:
    row = cursor.fetchone()
    print(row)

相关问题 更多 >