Неожиданный результат при вызове процедуры informix в python - PullRequest
0 голосов
/ 26 июня 2019

Я создал процедуру с именем 'off_shift_timing'.

Когда я выполняю запрос ниже от клиента, он дает мне ожидаемый результат.

query: - "выполнить процедуру off_shift_timing ('13c236ed-ebcf-11e8-8549-f6bfe15867a6 ') "

Но когда я пытаюсь выполнить ту же процедуру, используя функцию с именем callproc в модуле ibm_db_dbi, она возвращает значение параметра, а не ожидаемый результат.

Пример кода: -

класс соединения:

import ibm_db_dbi as db

class DatabaseInformix:

    Informix_DATABASE = data["Informix_DATABASE"]
    Informix_HOSTNAME = data["Informix_HOSTNAME"]
    Informix_UID = data["Informix_UID"]
    Informix_PWD = data["Informix_PWD"]
    Informix_PORT = data["Informix_PORT"]


    def __init__(self):
        try:
            self.connection = db.connect("DATABASE=%s;HOSTNAME=%s;PORT=%s;PROTOCOL=TCPIP;UID=%s;PWD=%s;" % (self.Informix_DATABASE, self.Informix_HOSTNAME, self.Informix_PORT, self.Informix_UID, self.Informix_PWD), "", "")
            self.cursor = self.connection.cursor()
        except db.Error as e:
            self.connection = ""
            logger.error('Informix Connection: %s', e._message)

    def query1(self, procname, param1):
        if(self.connection != ""):
            try:
                return self.cursor.callproc(procname, param1)
            except db.Error as e:
                logger.error('DB001 error in query : %s', e._message)

Основной класс: -

obj1 = DatabaseInformix()

project_guid = '13c236ed-ebcf-11e8-8549-f6bfe15867a6'

results2 = obj1.query1('off_shift_timing', (project_guid,))

print(results2) 

Выход: -

('13c236ed-ebcf-11e8-8549-f6bfe15867a6',)

но этоне фактический вывод это переменная в виде кортежа.

...