有没有一种方法可以通过Python运行查询从Oracle数据库中获取数值?

时间:2019-08-27 13:55:02

标签: python oracle11g

我通常对脚本编写和编码还很陌生,并且正在尝试让应用程序执行Python脚本,该脚本从Oracle数据库中获取会话利用率百分比值,并以某个阈值运行它。使用我当前的代码,我收到一个显示为“(XX,)”的元组,我的应用程序尝试将其解析为数字,并且最终的比较是不准确的。

我在StackOverflow上找到了几篇文章,并使用了一些方法,例如通过索引从元组中调用值(例如result_handler.update(RESULTS(0))并将结果作为字符串来尝试过滤标点符号。用于拉取值的索引仅返回整个元组,并且过滤不起作用。

import cx_Oracle
...
conn = cx_Oracle.connect("%s/%s@%s:%s/%s" % (USER,PASSWORD,HOST,PORT,INSTANCE))
cur = conn.cursor()
RESULTS = {}
RESULTS['check_percent'] = []

if self.cred_details['cred_type'] == 2 and self.cred_details['db_type'] == 3:

    try:
        cur.execute("SELECT ROUND(current_utilization / CAST(limit_value AS NUMBER) * 100,3) AS processes_percent_used FROM v$resource_limit WHERE resource_name = 'processes'")

        result = cur.fetchall()
        if result:
            RESULTS = {check_percent:[]}
            for index, value in enumerate(result, start=0):
                RESULTS[].append((index, value))

            result_handler.update(RESULTS)
...

我们只需要返回实际的数字(如23.45),但是结果以“(23.45,)”的元组形式返回

1 个答案:

答案 0 :(得分:0)

对于单列访存,您将使用逗号:

seqval, = cur.fetchone()

请参阅cx_Oracle教程:https://github.com/oracle/python-cx_Oracle/blob/master/samples/tutorial/Python-and-Oracle-Database-Scripting-for-the-Future.html#L460-L464

我让您将这种技术外推到您的代码中。